package org.dslintegration.ui.contentassist.antlr.internal; 

import java.io.InputStream;
import org.eclipse.xtext.*;
import org.eclipse.xtext.parser.*;
import org.eclipse.xtext.parser.impl.*;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.xtext.parser.antlr.XtextTokenStream;
import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.AbstractInternalContentAssistParser;
import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.DFA;
import org.dslintegration.services.KM3GrammarAccess;



import org.antlr.runtime.*;
import java.util.Stack;
import java.util.List;
import java.util.ArrayList;

@SuppressWarnings("all")
public class InternalKM3Parser extends AbstractInternalContentAssistParser {
    public static final String[] tokenNames = new String[] {
        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_ID", "RULE_INT", "RULE_STRING", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'*'", "'package'", "'{'", "'}'", "'class'", "'extends'", "'attribute'", "':'", "';'", "'reference'", "'oppositeOf'", "'['", "']'", "'-'", "'literal'", "'abstract'", "'container'", "'ordered'", "'datatype'", "'enumeration'"
    };
    public static final int RULE_ID=4;
    public static final int T__29=29;
    public static final int T__28=28;
    public static final int T__27=27;
    public static final int T__26=26;
    public static final int T__25=25;
    public static final int T__24=24;
    public static final int T__23=23;
    public static final int T__22=22;
    public static final int RULE_ANY_OTHER=10;
    public static final int T__21=21;
    public static final int T__20=20;
    public static final int RULE_SL_COMMENT=8;
    public static final int EOF=-1;
    public static final int RULE_ML_COMMENT=7;
    public static final int T__30=30;
    public static final int T__19=19;
    public static final int RULE_STRING=6;
    public static final int T__16=16;
    public static final int T__15=15;
    public static final int T__18=18;
    public static final int T__17=17;
    public static final int T__12=12;
    public static final int T__11=11;
    public static final int T__14=14;
    public static final int T__13=13;
    public static final int RULE_INT=5;
    public static final int RULE_WS=9;

    // delegates
    // delegators


        public InternalKM3Parser(TokenStream input) {
            this(input, new RecognizerSharedState());
        }
        public InternalKM3Parser(TokenStream input, RecognizerSharedState state) {
            super(input, state);
             
        }
        

    public String[] getTokenNames() { return InternalKM3Parser.tokenNames; }
    public String getGrammarFileName() { return "../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g"; }


     
     	private KM3GrammarAccess grammarAccess;
     	
        public void setGrammarAccess(KM3GrammarAccess grammarAccess) {
        	this.grammarAccess = grammarAccess;
        }
        
        @Override
        protected Grammar getGrammar() {
        	return grammarAccess.getGrammar();
        }
        
        @Override
        protected String getValueForTokenName(String tokenName) {
        	return tokenName;
        }




    // $ANTLR start "entryRuleMetamodel"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:60:1: entryRuleMetamodel : ruleMetamodel EOF ;
    public final void entryRuleMetamodel() throws RecognitionException {
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:61:1: ( ruleMetamodel EOF )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:62:1: ruleMetamodel EOF
            {
             before(grammarAccess.getMetamodelRule()); 
            pushFollow(FOLLOW_ruleMetamodel_in_entryRuleMetamodel61);
            ruleMetamodel();

            state._fsp--;

             after(grammarAccess.getMetamodelRule()); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleMetamodel68); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "entryRuleMetamodel"


    // $ANTLR start "ruleMetamodel"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:69:1: ruleMetamodel : ( ( rule__Metamodel__PackagesAssignment )* ) ;
    public final void ruleMetamodel() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:73:2: ( ( ( rule__Metamodel__PackagesAssignment )* ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:74:1: ( ( rule__Metamodel__PackagesAssignment )* )
            {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:74:1: ( ( rule__Metamodel__PackagesAssignment )* )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:75:1: ( rule__Metamodel__PackagesAssignment )*
            {
             before(grammarAccess.getMetamodelAccess().getPackagesAssignment()); 
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:76:1: ( rule__Metamodel__PackagesAssignment )*
            loop1:
            do {
                int alt1=2;
                int LA1_0 = input.LA(1);

                if ( (LA1_0==12) ) {
                    alt1=1;
                }


                switch (alt1) {
            	case 1 :
            	    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:76:2: rule__Metamodel__PackagesAssignment
            	    {
            	    pushFollow(FOLLOW_rule__Metamodel__PackagesAssignment_in_ruleMetamodel94);
            	    rule__Metamodel__PackagesAssignment();

            	    state._fsp--;


            	    }
            	    break;

            	default :
            	    break loop1;
                }
            } while (true);

             after(grammarAccess.getMetamodelAccess().getPackagesAssignment()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleMetamodel"


    // $ANTLR start "entryRulePackage"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:88:1: entryRulePackage : rulePackage EOF ;
    public final void entryRulePackage() throws RecognitionException {
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:89:1: ( rulePackage EOF )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:90:1: rulePackage EOF
            {
             before(grammarAccess.getPackageRule()); 
            pushFollow(FOLLOW_rulePackage_in_entryRulePackage122);
            rulePackage();

            state._fsp--;

             after(grammarAccess.getPackageRule()); 
            match(input,EOF,FOLLOW_EOF_in_entryRulePackage129); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "entryRulePackage"


    // $ANTLR start "rulePackage"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:97:1: rulePackage : ( ( rule__Package__Group__0 ) ) ;
    public final void rulePackage() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:101:2: ( ( ( rule__Package__Group__0 ) ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:102:1: ( ( rule__Package__Group__0 ) )
            {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:102:1: ( ( rule__Package__Group__0 ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:103:1: ( rule__Package__Group__0 )
            {
             before(grammarAccess.getPackageAccess().getGroup()); 
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:104:1: ( rule__Package__Group__0 )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:104:2: rule__Package__Group__0
            {
            pushFollow(FOLLOW_rule__Package__Group__0_in_rulePackage155);
            rule__Package__Group__0();

            state._fsp--;


            }

             after(grammarAccess.getPackageAccess().getGroup()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rulePackage"


    // $ANTLR start "entryRuleClassifier"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:116:1: entryRuleClassifier : ruleClassifier EOF ;
    public final void entryRuleClassifier() throws RecognitionException {
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:117:1: ( ruleClassifier EOF )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:118:1: ruleClassifier EOF
            {
             before(grammarAccess.getClassifierRule()); 
            pushFollow(FOLLOW_ruleClassifier_in_entryRuleClassifier182);
            ruleClassifier();

            state._fsp--;

             after(grammarAccess.getClassifierRule()); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleClassifier189); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "entryRuleClassifier"


    // $ANTLR start "ruleClassifier"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:125:1: ruleClassifier : ( ( rule__Classifier__Alternatives ) ) ;
    public final void ruleClassifier() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:129:2: ( ( ( rule__Classifier__Alternatives ) ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:130:1: ( ( rule__Classifier__Alternatives ) )
            {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:130:1: ( ( rule__Classifier__Alternatives ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:131:1: ( rule__Classifier__Alternatives )
            {
             before(grammarAccess.getClassifierAccess().getAlternatives()); 
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:132:1: ( rule__Classifier__Alternatives )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:132:2: rule__Classifier__Alternatives
            {
            pushFollow(FOLLOW_rule__Classifier__Alternatives_in_ruleClassifier215);
            rule__Classifier__Alternatives();

            state._fsp--;


            }

             after(grammarAccess.getClassifierAccess().getAlternatives()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleClassifier"


    // $ANTLR start "entryRuleKM3Class"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:144:1: entryRuleKM3Class : ruleKM3Class EOF ;
    public final void entryRuleKM3Class() throws RecognitionException {
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:145:1: ( ruleKM3Class EOF )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:146:1: ruleKM3Class EOF
            {
             before(grammarAccess.getKM3ClassRule()); 
            pushFollow(FOLLOW_ruleKM3Class_in_entryRuleKM3Class242);
            ruleKM3Class();

            state._fsp--;

             after(grammarAccess.getKM3ClassRule()); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleKM3Class249); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "entryRuleKM3Class"


    // $ANTLR start "ruleKM3Class"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:153:1: ruleKM3Class : ( ( rule__KM3Class__Group__0 ) ) ;
    public final void ruleKM3Class() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:157:2: ( ( ( rule__KM3Class__Group__0 ) ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:158:1: ( ( rule__KM3Class__Group__0 ) )
            {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:158:1: ( ( rule__KM3Class__Group__0 ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:159:1: ( rule__KM3Class__Group__0 )
            {
             before(grammarAccess.getKM3ClassAccess().getGroup()); 
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:160:1: ( rule__KM3Class__Group__0 )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:160:2: rule__KM3Class__Group__0
            {
            pushFollow(FOLLOW_rule__KM3Class__Group__0_in_ruleKM3Class275);
            rule__KM3Class__Group__0();

            state._fsp--;


            }

             after(grammarAccess.getKM3ClassAccess().getGroup()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleKM3Class"


    // $ANTLR start "entryRuleFeature"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:172:1: entryRuleFeature : ruleFeature EOF ;
    public final void entryRuleFeature() throws RecognitionException {
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:173:1: ( ruleFeature EOF )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:174:1: ruleFeature EOF
            {
             before(grammarAccess.getFeatureRule()); 
            pushFollow(FOLLOW_ruleFeature_in_entryRuleFeature302);
            ruleFeature();

            state._fsp--;

             after(grammarAccess.getFeatureRule()); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleFeature309); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "entryRuleFeature"


    // $ANTLR start "ruleFeature"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:181:1: ruleFeature : ( ( rule__Feature__Alternatives ) ) ;
    public final void ruleFeature() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:185:2: ( ( ( rule__Feature__Alternatives ) ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:186:1: ( ( rule__Feature__Alternatives ) )
            {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:186:1: ( ( rule__Feature__Alternatives ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:187:1: ( rule__Feature__Alternatives )
            {
             before(grammarAccess.getFeatureAccess().getAlternatives()); 
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:188:1: ( rule__Feature__Alternatives )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:188:2: rule__Feature__Alternatives
            {
            pushFollow(FOLLOW_rule__Feature__Alternatives_in_ruleFeature335);
            rule__Feature__Alternatives();

            state._fsp--;


            }

             after(grammarAccess.getFeatureAccess().getAlternatives()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleFeature"


    // $ANTLR start "entryRuleAttribute"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:200:1: entryRuleAttribute : ruleAttribute EOF ;
    public final void entryRuleAttribute() throws RecognitionException {
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:201:1: ( ruleAttribute EOF )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:202:1: ruleAttribute EOF
            {
             before(grammarAccess.getAttributeRule()); 
            pushFollow(FOLLOW_ruleAttribute_in_entryRuleAttribute362);
            ruleAttribute();

            state._fsp--;

             after(grammarAccess.getAttributeRule()); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleAttribute369); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "entryRuleAttribute"


    // $ANTLR start "ruleAttribute"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:209:1: ruleAttribute : ( ( rule__Attribute__Group__0 ) ) ;
    public final void ruleAttribute() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:213:2: ( ( ( rule__Attribute__Group__0 ) ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:214:1: ( ( rule__Attribute__Group__0 ) )
            {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:214:1: ( ( rule__Attribute__Group__0 ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:215:1: ( rule__Attribute__Group__0 )
            {
             before(grammarAccess.getAttributeAccess().getGroup()); 
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:216:1: ( rule__Attribute__Group__0 )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:216:2: rule__Attribute__Group__0
            {
            pushFollow(FOLLOW_rule__Attribute__Group__0_in_ruleAttribute395);
            rule__Attribute__Group__0();

            state._fsp--;


            }

             after(grammarAccess.getAttributeAccess().getGroup()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleAttribute"


    // $ANTLR start "entryRuleTypeRef"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:228:1: entryRuleTypeRef : ruleTypeRef EOF ;
    public final void entryRuleTypeRef() throws RecognitionException {
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:229:1: ( ruleTypeRef EOF )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:230:1: ruleTypeRef EOF
            {
             before(grammarAccess.getTypeRefRule()); 
            pushFollow(FOLLOW_ruleTypeRef_in_entryRuleTypeRef422);
            ruleTypeRef();

            state._fsp--;

             after(grammarAccess.getTypeRefRule()); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleTypeRef429); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "entryRuleTypeRef"


    // $ANTLR start "ruleTypeRef"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:237:1: ruleTypeRef : ( ( rule__TypeRef__TypeAssignment ) ) ;
    public final void ruleTypeRef() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:241:2: ( ( ( rule__TypeRef__TypeAssignment ) ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:242:1: ( ( rule__TypeRef__TypeAssignment ) )
            {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:242:1: ( ( rule__TypeRef__TypeAssignment ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:243:1: ( rule__TypeRef__TypeAssignment )
            {
             before(grammarAccess.getTypeRefAccess().getTypeAssignment()); 
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:244:1: ( rule__TypeRef__TypeAssignment )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:244:2: rule__TypeRef__TypeAssignment
            {
            pushFollow(FOLLOW_rule__TypeRef__TypeAssignment_in_ruleTypeRef455);
            rule__TypeRef__TypeAssignment();

            state._fsp--;


            }

             after(grammarAccess.getTypeRefAccess().getTypeAssignment()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleTypeRef"


    // $ANTLR start "entryRuleReference"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:256:1: entryRuleReference : ruleReference EOF ;
    public final void entryRuleReference() throws RecognitionException {
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:257:1: ( ruleReference EOF )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:258:1: ruleReference EOF
            {
             before(grammarAccess.getReferenceRule()); 
            pushFollow(FOLLOW_ruleReference_in_entryRuleReference482);
            ruleReference();

            state._fsp--;

             after(grammarAccess.getReferenceRule()); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleReference489); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "entryRuleReference"


    // $ANTLR start "ruleReference"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:265:1: ruleReference : ( ( rule__Reference__Group__0 ) ) ;
    public final void ruleReference() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:269:2: ( ( ( rule__Reference__Group__0 ) ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:270:1: ( ( rule__Reference__Group__0 ) )
            {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:270:1: ( ( rule__Reference__Group__0 ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:271:1: ( rule__Reference__Group__0 )
            {
             before(grammarAccess.getReferenceAccess().getGroup()); 
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:272:1: ( rule__Reference__Group__0 )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:272:2: rule__Reference__Group__0
            {
            pushFollow(FOLLOW_rule__Reference__Group__0_in_ruleReference515);
            rule__Reference__Group__0();

            state._fsp--;


            }

             after(grammarAccess.getReferenceAccess().getGroup()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleReference"


    // $ANTLR start "entryRuleMultiplicity"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:284:1: entryRuleMultiplicity : ruleMultiplicity EOF ;
    public final void entryRuleMultiplicity() throws RecognitionException {
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:285:1: ( ruleMultiplicity EOF )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:286:1: ruleMultiplicity EOF
            {
             before(grammarAccess.getMultiplicityRule()); 
            pushFollow(FOLLOW_ruleMultiplicity_in_entryRuleMultiplicity542);
            ruleMultiplicity();

            state._fsp--;

             after(grammarAccess.getMultiplicityRule()); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleMultiplicity549); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "entryRuleMultiplicity"


    // $ANTLR start "ruleMultiplicity"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:293:1: ruleMultiplicity : ( ( rule__Multiplicity__Group__0 ) ) ;
    public final void ruleMultiplicity() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:297:2: ( ( ( rule__Multiplicity__Group__0 ) ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:298:1: ( ( rule__Multiplicity__Group__0 ) )
            {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:298:1: ( ( rule__Multiplicity__Group__0 ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:299:1: ( rule__Multiplicity__Group__0 )
            {
             before(grammarAccess.getMultiplicityAccess().getGroup()); 
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:300:1: ( rule__Multiplicity__Group__0 )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:300:2: rule__Multiplicity__Group__0
            {
            pushFollow(FOLLOW_rule__Multiplicity__Group__0_in_ruleMultiplicity575);
            rule__Multiplicity__Group__0();

            state._fsp--;


            }

             after(grammarAccess.getMultiplicityAccess().getGroup()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleMultiplicity"


    // $ANTLR start "entryRuleDatatype"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:312:1: entryRuleDatatype : ruleDatatype EOF ;
    public final void entryRuleDatatype() throws RecognitionException {
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:313:1: ( ruleDatatype EOF )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:314:1: ruleDatatype EOF
            {
             before(grammarAccess.getDatatypeRule()); 
            pushFollow(FOLLOW_ruleDatatype_in_entryRuleDatatype602);
            ruleDatatype();

            state._fsp--;

             after(grammarAccess.getDatatypeRule()); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleDatatype609); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "entryRuleDatatype"


    // $ANTLR start "ruleDatatype"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:321:1: ruleDatatype : ( ( rule__Datatype__Group__0 ) ) ;
    public final void ruleDatatype() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:325:2: ( ( ( rule__Datatype__Group__0 ) ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:326:1: ( ( rule__Datatype__Group__0 ) )
            {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:326:1: ( ( rule__Datatype__Group__0 ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:327:1: ( rule__Datatype__Group__0 )
            {
             before(grammarAccess.getDatatypeAccess().getGroup()); 
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:328:1: ( rule__Datatype__Group__0 )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:328:2: rule__Datatype__Group__0
            {
            pushFollow(FOLLOW_rule__Datatype__Group__0_in_ruleDatatype635);
            rule__Datatype__Group__0();

            state._fsp--;


            }

             after(grammarAccess.getDatatypeAccess().getGroup()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleDatatype"


    // $ANTLR start "entryRuleEnumeration"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:340:1: entryRuleEnumeration : ruleEnumeration EOF ;
    public final void entryRuleEnumeration() throws RecognitionException {
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:341:1: ( ruleEnumeration EOF )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:342:1: ruleEnumeration EOF
            {
             before(grammarAccess.getEnumerationRule()); 
            pushFollow(FOLLOW_ruleEnumeration_in_entryRuleEnumeration662);
            ruleEnumeration();

            state._fsp--;

             after(grammarAccess.getEnumerationRule()); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleEnumeration669); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "entryRuleEnumeration"


    // $ANTLR start "ruleEnumeration"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:349:1: ruleEnumeration : ( ( rule__Enumeration__Group__0 ) ) ;
    public final void ruleEnumeration() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:353:2: ( ( ( rule__Enumeration__Group__0 ) ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:354:1: ( ( rule__Enumeration__Group__0 ) )
            {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:354:1: ( ( rule__Enumeration__Group__0 ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:355:1: ( rule__Enumeration__Group__0 )
            {
             before(grammarAccess.getEnumerationAccess().getGroup()); 
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:356:1: ( rule__Enumeration__Group__0 )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:356:2: rule__Enumeration__Group__0
            {
            pushFollow(FOLLOW_rule__Enumeration__Group__0_in_ruleEnumeration695);
            rule__Enumeration__Group__0();

            state._fsp--;


            }

             after(grammarAccess.getEnumerationAccess().getGroup()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleEnumeration"


    // $ANTLR start "entryRuleLiteral"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:368:1: entryRuleLiteral : ruleLiteral EOF ;
    public final void entryRuleLiteral() throws RecognitionException {
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:369:1: ( ruleLiteral EOF )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:370:1: ruleLiteral EOF
            {
             before(grammarAccess.getLiteralRule()); 
            pushFollow(FOLLOW_ruleLiteral_in_entryRuleLiteral722);
            ruleLiteral();

            state._fsp--;

             after(grammarAccess.getLiteralRule()); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleLiteral729); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "entryRuleLiteral"


    // $ANTLR start "ruleLiteral"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:377:1: ruleLiteral : ( ( rule__Literal__Group__0 ) ) ;
    public final void ruleLiteral() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:381:2: ( ( ( rule__Literal__Group__0 ) ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:382:1: ( ( rule__Literal__Group__0 ) )
            {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:382:1: ( ( rule__Literal__Group__0 ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:383:1: ( rule__Literal__Group__0 )
            {
             before(grammarAccess.getLiteralAccess().getGroup()); 
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:384:1: ( rule__Literal__Group__0 )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:384:2: rule__Literal__Group__0
            {
            pushFollow(FOLLOW_rule__Literal__Group__0_in_ruleLiteral755);
            rule__Literal__Group__0();

            state._fsp--;


            }

             after(grammarAccess.getLiteralAccess().getGroup()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleLiteral"


    // $ANTLR start "rule__Classifier__Alternatives"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:396:1: rule__Classifier__Alternatives : ( ( ruleKM3Class ) | ( ruleDatatype ) | ( ruleEnumeration ) );
    public final void rule__Classifier__Alternatives() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:400:1: ( ( ruleKM3Class ) | ( ruleDatatype ) | ( ruleEnumeration ) )
            int alt2=3;
            switch ( input.LA(1) ) {
            case 15:
            case 26:
                {
                alt2=1;
                }
                break;
            case 29:
                {
                alt2=2;
                }
                break;
            case 30:
                {
                alt2=3;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 2, 0, input);

                throw nvae;
            }

            switch (alt2) {
                case 1 :
                    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:401:1: ( ruleKM3Class )
                    {
                    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:401:1: ( ruleKM3Class )
                    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:402:1: ruleKM3Class
                    {
                     before(grammarAccess.getClassifierAccess().getKM3ClassParserRuleCall_0()); 
                    pushFollow(FOLLOW_ruleKM3Class_in_rule__Classifier__Alternatives791);
                    ruleKM3Class();

                    state._fsp--;

                     after(grammarAccess.getClassifierAccess().getKM3ClassParserRuleCall_0()); 

                    }


                    }
                    break;
                case 2 :
                    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:407:6: ( ruleDatatype )
                    {
                    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:407:6: ( ruleDatatype )
                    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:408:1: ruleDatatype
                    {
                     before(grammarAccess.getClassifierAccess().getDatatypeParserRuleCall_1()); 
                    pushFollow(FOLLOW_ruleDatatype_in_rule__Classifier__Alternatives808);
                    ruleDatatype();

                    state._fsp--;

                     after(grammarAccess.getClassifierAccess().getDatatypeParserRuleCall_1()); 

                    }


                    }
                    break;
                case 3 :
                    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:413:6: ( ruleEnumeration )
                    {
                    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:413:6: ( ruleEnumeration )
                    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:414:1: ruleEnumeration
                    {
                     before(grammarAccess.getClassifierAccess().getEnumerationParserRuleCall_2()); 
                    pushFollow(FOLLOW_ruleEnumeration_in_rule__Classifier__Alternatives825);
                    ruleEnumeration();

                    state._fsp--;

                     after(grammarAccess.getClassifierAccess().getEnumerationParserRuleCall_2()); 

                    }


                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Classifier__Alternatives"


    // $ANTLR start "rule__Feature__Alternatives"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:424:1: rule__Feature__Alternatives : ( ( ruleAttribute ) | ( ruleReference ) );
    public final void rule__Feature__Alternatives() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:428:1: ( ( ruleAttribute ) | ( ruleReference ) )
            int alt3=2;
            int LA3_0 = input.LA(1);

            if ( (LA3_0==17) ) {
                alt3=1;
            }
            else if ( (LA3_0==20) ) {
                alt3=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 3, 0, input);

                throw nvae;
            }
            switch (alt3) {
                case 1 :
                    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:429:1: ( ruleAttribute )
                    {
                    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:429:1: ( ruleAttribute )
                    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:430:1: ruleAttribute
                    {
                     before(grammarAccess.getFeatureAccess().getAttributeParserRuleCall_0()); 
                    pushFollow(FOLLOW_ruleAttribute_in_rule__Feature__Alternatives857);
                    ruleAttribute();

                    state._fsp--;

                     after(grammarAccess.getFeatureAccess().getAttributeParserRuleCall_0()); 

                    }


                    }
                    break;
                case 2 :
                    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:435:6: ( ruleReference )
                    {
                    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:435:6: ( ruleReference )
                    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:436:1: ruleReference
                    {
                     before(grammarAccess.getFeatureAccess().getReferenceParserRuleCall_1()); 
                    pushFollow(FOLLOW_ruleReference_in_rule__Feature__Alternatives874);
                    ruleReference();

                    state._fsp--;

                     after(grammarAccess.getFeatureAccess().getReferenceParserRuleCall_1()); 

                    }


                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Feature__Alternatives"


    // $ANTLR start "rule__Multiplicity__Alternatives_1"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:446:1: rule__Multiplicity__Alternatives_1 : ( ( ( rule__Multiplicity__Group_1_0__0 ) ) | ( ( rule__Multiplicity__UnboundedAssignment_1_1 ) ) );
    public final void rule__Multiplicity__Alternatives_1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:450:1: ( ( ( rule__Multiplicity__Group_1_0__0 ) ) | ( ( rule__Multiplicity__UnboundedAssignment_1_1 ) ) )
            int alt4=2;
            int LA4_0 = input.LA(1);

            if ( (LA4_0==RULE_INT) ) {
                alt4=1;
            }
            else if ( (LA4_0==11) ) {
                alt4=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 4, 0, input);

                throw nvae;
            }
            switch (alt4) {
                case 1 :
                    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:451:1: ( ( rule__Multiplicity__Group_1_0__0 ) )
                    {
                    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:451:1: ( ( rule__Multiplicity__Group_1_0__0 ) )
                    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:452:1: ( rule__Multiplicity__Group_1_0__0 )
                    {
                     before(grammarAccess.getMultiplicityAccess().getGroup_1_0()); 
                    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:453:1: ( rule__Multiplicity__Group_1_0__0 )
                    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:453:2: rule__Multiplicity__Group_1_0__0
                    {
                    pushFollow(FOLLOW_rule__Multiplicity__Group_1_0__0_in_rule__Multiplicity__Alternatives_1906);
                    rule__Multiplicity__Group_1_0__0();

                    state._fsp--;


                    }

                     after(grammarAccess.getMultiplicityAccess().getGroup_1_0()); 

                    }


                    }
                    break;
                case 2 :
                    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:457:6: ( ( rule__Multiplicity__UnboundedAssignment_1_1 ) )
                    {
                    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:457:6: ( ( rule__Multiplicity__UnboundedAssignment_1_1 ) )
                    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:458:1: ( rule__Multiplicity__UnboundedAssignment_1_1 )
                    {
                     before(grammarAccess.getMultiplicityAccess().getUnboundedAssignment_1_1()); 
                    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:459:1: ( rule__Multiplicity__UnboundedAssignment_1_1 )
                    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:459:2: rule__Multiplicity__UnboundedAssignment_1_1
                    {
                    pushFollow(FOLLOW_rule__Multiplicity__UnboundedAssignment_1_1_in_rule__Multiplicity__Alternatives_1924);
                    rule__Multiplicity__UnboundedAssignment_1_1();

                    state._fsp--;


                    }

                     after(grammarAccess.getMultiplicityAccess().getUnboundedAssignment_1_1()); 

                    }


                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Multiplicity__Alternatives_1"


    // $ANTLR start "rule__Multiplicity__Alternatives_1_0_1_1"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:468:1: rule__Multiplicity__Alternatives_1_0_1_1 : ( ( ( rule__Multiplicity__UpperBoundAssignment_1_0_1_1_0 ) ) | ( '*' ) );
    public final void rule__Multiplicity__Alternatives_1_0_1_1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:472:1: ( ( ( rule__Multiplicity__UpperBoundAssignment_1_0_1_1_0 ) ) | ( '*' ) )
            int alt5=2;
            int LA5_0 = input.LA(1);

            if ( (LA5_0==RULE_INT) ) {
                alt5=1;
            }
            else if ( (LA5_0==11) ) {
                alt5=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 5, 0, input);

                throw nvae;
            }
            switch (alt5) {
                case 1 :
                    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:473:1: ( ( rule__Multiplicity__UpperBoundAssignment_1_0_1_1_0 ) )
                    {
                    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:473:1: ( ( rule__Multiplicity__UpperBoundAssignment_1_0_1_1_0 ) )
                    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:474:1: ( rule__Multiplicity__UpperBoundAssignment_1_0_1_1_0 )
                    {
                     before(grammarAccess.getMultiplicityAccess().getUpperBoundAssignment_1_0_1_1_0()); 
                    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:475:1: ( rule__Multiplicity__UpperBoundAssignment_1_0_1_1_0 )
                    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:475:2: rule__Multiplicity__UpperBoundAssignment_1_0_1_1_0
                    {
                    pushFollow(FOLLOW_rule__Multiplicity__UpperBoundAssignment_1_0_1_1_0_in_rule__Multiplicity__Alternatives_1_0_1_1957);
                    rule__Multiplicity__UpperBoundAssignment_1_0_1_1_0();

                    state._fsp--;


                    }

                     after(grammarAccess.getMultiplicityAccess().getUpperBoundAssignment_1_0_1_1_0()); 

                    }


                    }
                    break;
                case 2 :
                    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:479:6: ( '*' )
                    {
                    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:479:6: ( '*' )
                    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:480:1: '*'
                    {
                     before(grammarAccess.getMultiplicityAccess().getAsteriskKeyword_1_0_1_1_1()); 
                    match(input,11,FOLLOW_11_in_rule__Multiplicity__Alternatives_1_0_1_1976); 
                     after(grammarAccess.getMultiplicityAccess().getAsteriskKeyword_1_0_1_1_1()); 

                    }


                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Multiplicity__Alternatives_1_0_1_1"


    // $ANTLR start "rule__Package__Group__0"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:494:1: rule__Package__Group__0 : rule__Package__Group__0__Impl rule__Package__Group__1 ;
    public final void rule__Package__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:498:1: ( rule__Package__Group__0__Impl rule__Package__Group__1 )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:499:2: rule__Package__Group__0__Impl rule__Package__Group__1
            {
            pushFollow(FOLLOW_rule__Package__Group__0__Impl_in_rule__Package__Group__01008);
            rule__Package__Group__0__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Package__Group__1_in_rule__Package__Group__01011);
            rule__Package__Group__1();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Package__Group__0"


    // $ANTLR start "rule__Package__Group__0__Impl"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:506:1: rule__Package__Group__0__Impl : ( 'package' ) ;
    public final void rule__Package__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:510:1: ( ( 'package' ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:511:1: ( 'package' )
            {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:511:1: ( 'package' )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:512:1: 'package'
            {
             before(grammarAccess.getPackageAccess().getPackageKeyword_0()); 
            match(input,12,FOLLOW_12_in_rule__Package__Group__0__Impl1039); 
             after(grammarAccess.getPackageAccess().getPackageKeyword_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Package__Group__0__Impl"


    // $ANTLR start "rule__Package__Group__1"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:525:1: rule__Package__Group__1 : rule__Package__Group__1__Impl rule__Package__Group__2 ;
    public final void rule__Package__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:529:1: ( rule__Package__Group__1__Impl rule__Package__Group__2 )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:530:2: rule__Package__Group__1__Impl rule__Package__Group__2
            {
            pushFollow(FOLLOW_rule__Package__Group__1__Impl_in_rule__Package__Group__11070);
            rule__Package__Group__1__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Package__Group__2_in_rule__Package__Group__11073);
            rule__Package__Group__2();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Package__Group__1"


    // $ANTLR start "rule__Package__Group__1__Impl"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:537:1: rule__Package__Group__1__Impl : ( ( rule__Package__NameAssignment_1 ) ) ;
    public final void rule__Package__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:541:1: ( ( ( rule__Package__NameAssignment_1 ) ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:542:1: ( ( rule__Package__NameAssignment_1 ) )
            {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:542:1: ( ( rule__Package__NameAssignment_1 ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:543:1: ( rule__Package__NameAssignment_1 )
            {
             before(grammarAccess.getPackageAccess().getNameAssignment_1()); 
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:544:1: ( rule__Package__NameAssignment_1 )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:544:2: rule__Package__NameAssignment_1
            {
            pushFollow(FOLLOW_rule__Package__NameAssignment_1_in_rule__Package__Group__1__Impl1100);
            rule__Package__NameAssignment_1();

            state._fsp--;


            }

             after(grammarAccess.getPackageAccess().getNameAssignment_1()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Package__Group__1__Impl"


    // $ANTLR start "rule__Package__Group__2"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:554:1: rule__Package__Group__2 : rule__Package__Group__2__Impl rule__Package__Group__3 ;
    public final void rule__Package__Group__2() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:558:1: ( rule__Package__Group__2__Impl rule__Package__Group__3 )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:559:2: rule__Package__Group__2__Impl rule__Package__Group__3
            {
            pushFollow(FOLLOW_rule__Package__Group__2__Impl_in_rule__Package__Group__21130);
            rule__Package__Group__2__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Package__Group__3_in_rule__Package__Group__21133);
            rule__Package__Group__3();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Package__Group__2"


    // $ANTLR start "rule__Package__Group__2__Impl"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:566:1: rule__Package__Group__2__Impl : ( '{' ) ;
    public final void rule__Package__Group__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:570:1: ( ( '{' ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:571:1: ( '{' )
            {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:571:1: ( '{' )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:572:1: '{'
            {
             before(grammarAccess.getPackageAccess().getLeftCurlyBracketKeyword_2()); 
            match(input,13,FOLLOW_13_in_rule__Package__Group__2__Impl1161); 
             after(grammarAccess.getPackageAccess().getLeftCurlyBracketKeyword_2()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Package__Group__2__Impl"


    // $ANTLR start "rule__Package__Group__3"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:585:1: rule__Package__Group__3 : rule__Package__Group__3__Impl rule__Package__Group__4 ;
    public final void rule__Package__Group__3() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:589:1: ( rule__Package__Group__3__Impl rule__Package__Group__4 )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:590:2: rule__Package__Group__3__Impl rule__Package__Group__4
            {
            pushFollow(FOLLOW_rule__Package__Group__3__Impl_in_rule__Package__Group__31192);
            rule__Package__Group__3__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Package__Group__4_in_rule__Package__Group__31195);
            rule__Package__Group__4();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Package__Group__3"


    // $ANTLR start "rule__Package__Group__3__Impl"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:597:1: rule__Package__Group__3__Impl : ( ( rule__Package__ClassifiersAssignment_3 )* ) ;
    public final void rule__Package__Group__3__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:601:1: ( ( ( rule__Package__ClassifiersAssignment_3 )* ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:602:1: ( ( rule__Package__ClassifiersAssignment_3 )* )
            {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:602:1: ( ( rule__Package__ClassifiersAssignment_3 )* )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:603:1: ( rule__Package__ClassifiersAssignment_3 )*
            {
             before(grammarAccess.getPackageAccess().getClassifiersAssignment_3()); 
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:604:1: ( rule__Package__ClassifiersAssignment_3 )*
            loop6:
            do {
                int alt6=2;
                int LA6_0 = input.LA(1);

                if ( (LA6_0==15||LA6_0==26||(LA6_0>=29 && LA6_0<=30)) ) {
                    alt6=1;
                }


                switch (alt6) {
            	case 1 :
            	    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:604:2: rule__Package__ClassifiersAssignment_3
            	    {
            	    pushFollow(FOLLOW_rule__Package__ClassifiersAssignment_3_in_rule__Package__Group__3__Impl1222);
            	    rule__Package__ClassifiersAssignment_3();

            	    state._fsp--;


            	    }
            	    break;

            	default :
            	    break loop6;
                }
            } while (true);

             after(grammarAccess.getPackageAccess().getClassifiersAssignment_3()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Package__Group__3__Impl"


    // $ANTLR start "rule__Package__Group__4"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:614:1: rule__Package__Group__4 : rule__Package__Group__4__Impl ;
    public final void rule__Package__Group__4() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:618:1: ( rule__Package__Group__4__Impl )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:619:2: rule__Package__Group__4__Impl
            {
            pushFollow(FOLLOW_rule__Package__Group__4__Impl_in_rule__Package__Group__41253);
            rule__Package__Group__4__Impl();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Package__Group__4"


    // $ANTLR start "rule__Package__Group__4__Impl"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:625:1: rule__Package__Group__4__Impl : ( '}' ) ;
    public final void rule__Package__Group__4__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:629:1: ( ( '}' ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:630:1: ( '}' )
            {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:630:1: ( '}' )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:631:1: '}'
            {
             before(grammarAccess.getPackageAccess().getRightCurlyBracketKeyword_4()); 
            match(input,14,FOLLOW_14_in_rule__Package__Group__4__Impl1281); 
             after(grammarAccess.getPackageAccess().getRightCurlyBracketKeyword_4()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Package__Group__4__Impl"


    // $ANTLR start "rule__KM3Class__Group__0"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:654:1: rule__KM3Class__Group__0 : rule__KM3Class__Group__0__Impl rule__KM3Class__Group__1 ;
    public final void rule__KM3Class__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:658:1: ( rule__KM3Class__Group__0__Impl rule__KM3Class__Group__1 )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:659:2: rule__KM3Class__Group__0__Impl rule__KM3Class__Group__1
            {
            pushFollow(FOLLOW_rule__KM3Class__Group__0__Impl_in_rule__KM3Class__Group__01322);
            rule__KM3Class__Group__0__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__KM3Class__Group__1_in_rule__KM3Class__Group__01325);
            rule__KM3Class__Group__1();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__KM3Class__Group__0"


    // $ANTLR start "rule__KM3Class__Group__0__Impl"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:666:1: rule__KM3Class__Group__0__Impl : ( ( rule__KM3Class__AbstractAssignment_0 )? ) ;
    public final void rule__KM3Class__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:670:1: ( ( ( rule__KM3Class__AbstractAssignment_0 )? ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:671:1: ( ( rule__KM3Class__AbstractAssignment_0 )? )
            {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:671:1: ( ( rule__KM3Class__AbstractAssignment_0 )? )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:672:1: ( rule__KM3Class__AbstractAssignment_0 )?
            {
             before(grammarAccess.getKM3ClassAccess().getAbstractAssignment_0()); 
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:673:1: ( rule__KM3Class__AbstractAssignment_0 )?
            int alt7=2;
            int LA7_0 = input.LA(1);

            if ( (LA7_0==26) ) {
                alt7=1;
            }
            switch (alt7) {
                case 1 :
                    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:673:2: rule__KM3Class__AbstractAssignment_0
                    {
                    pushFollow(FOLLOW_rule__KM3Class__AbstractAssignment_0_in_rule__KM3Class__Group__0__Impl1352);
                    rule__KM3Class__AbstractAssignment_0();

                    state._fsp--;


                    }
                    break;

            }

             after(grammarAccess.getKM3ClassAccess().getAbstractAssignment_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__KM3Class__Group__0__Impl"


    // $ANTLR start "rule__KM3Class__Group__1"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:683:1: rule__KM3Class__Group__1 : rule__KM3Class__Group__1__Impl rule__KM3Class__Group__2 ;
    public final void rule__KM3Class__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:687:1: ( rule__KM3Class__Group__1__Impl rule__KM3Class__Group__2 )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:688:2: rule__KM3Class__Group__1__Impl rule__KM3Class__Group__2
            {
            pushFollow(FOLLOW_rule__KM3Class__Group__1__Impl_in_rule__KM3Class__Group__11383);
            rule__KM3Class__Group__1__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__KM3Class__Group__2_in_rule__KM3Class__Group__11386);
            rule__KM3Class__Group__2();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__KM3Class__Group__1"


    // $ANTLR start "rule__KM3Class__Group__1__Impl"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:695:1: rule__KM3Class__Group__1__Impl : ( 'class' ) ;
    public final void rule__KM3Class__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:699:1: ( ( 'class' ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:700:1: ( 'class' )
            {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:700:1: ( 'class' )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:701:1: 'class'
            {
             before(grammarAccess.getKM3ClassAccess().getClassKeyword_1()); 
            match(input,15,FOLLOW_15_in_rule__KM3Class__Group__1__Impl1414); 
             after(grammarAccess.getKM3ClassAccess().getClassKeyword_1()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__KM3Class__Group__1__Impl"


    // $ANTLR start "rule__KM3Class__Group__2"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:714:1: rule__KM3Class__Group__2 : rule__KM3Class__Group__2__Impl rule__KM3Class__Group__3 ;
    public final void rule__KM3Class__Group__2() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:718:1: ( rule__KM3Class__Group__2__Impl rule__KM3Class__Group__3 )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:719:2: rule__KM3Class__Group__2__Impl rule__KM3Class__Group__3
            {
            pushFollow(FOLLOW_rule__KM3Class__Group__2__Impl_in_rule__KM3Class__Group__21445);
            rule__KM3Class__Group__2__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__KM3Class__Group__3_in_rule__KM3Class__Group__21448);
            rule__KM3Class__Group__3();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__KM3Class__Group__2"


    // $ANTLR start "rule__KM3Class__Group__2__Impl"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:726:1: rule__KM3Class__Group__2__Impl : ( ( rule__KM3Class__NameAssignment_2 ) ) ;
    public final void rule__KM3Class__Group__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:730:1: ( ( ( rule__KM3Class__NameAssignment_2 ) ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:731:1: ( ( rule__KM3Class__NameAssignment_2 ) )
            {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:731:1: ( ( rule__KM3Class__NameAssignment_2 ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:732:1: ( rule__KM3Class__NameAssignment_2 )
            {
             before(grammarAccess.getKM3ClassAccess().getNameAssignment_2()); 
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:733:1: ( rule__KM3Class__NameAssignment_2 )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:733:2: rule__KM3Class__NameAssignment_2
            {
            pushFollow(FOLLOW_rule__KM3Class__NameAssignment_2_in_rule__KM3Class__Group__2__Impl1475);
            rule__KM3Class__NameAssignment_2();

            state._fsp--;


            }

             after(grammarAccess.getKM3ClassAccess().getNameAssignment_2()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__KM3Class__Group__2__Impl"


    // $ANTLR start "rule__KM3Class__Group__3"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:743:1: rule__KM3Class__Group__3 : rule__KM3Class__Group__3__Impl rule__KM3Class__Group__4 ;
    public final void rule__KM3Class__Group__3() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:747:1: ( rule__KM3Class__Group__3__Impl rule__KM3Class__Group__4 )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:748:2: rule__KM3Class__Group__3__Impl rule__KM3Class__Group__4
            {
            pushFollow(FOLLOW_rule__KM3Class__Group__3__Impl_in_rule__KM3Class__Group__31505);
            rule__KM3Class__Group__3__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__KM3Class__Group__4_in_rule__KM3Class__Group__31508);
            rule__KM3Class__Group__4();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__KM3Class__Group__3"


    // $ANTLR start "rule__KM3Class__Group__3__Impl"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:755:1: rule__KM3Class__Group__3__Impl : ( ( rule__KM3Class__Group_3__0 )? ) ;
    public final void rule__KM3Class__Group__3__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:759:1: ( ( ( rule__KM3Class__Group_3__0 )? ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:760:1: ( ( rule__KM3Class__Group_3__0 )? )
            {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:760:1: ( ( rule__KM3Class__Group_3__0 )? )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:761:1: ( rule__KM3Class__Group_3__0 )?
            {
             before(grammarAccess.getKM3ClassAccess().getGroup_3()); 
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:762:1: ( rule__KM3Class__Group_3__0 )?
            int alt8=2;
            int LA8_0 = input.LA(1);

            if ( (LA8_0==16) ) {
                alt8=1;
            }
            switch (alt8) {
                case 1 :
                    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:762:2: rule__KM3Class__Group_3__0
                    {
                    pushFollow(FOLLOW_rule__KM3Class__Group_3__0_in_rule__KM3Class__Group__3__Impl1535);
                    rule__KM3Class__Group_3__0();

                    state._fsp--;


                    }
                    break;

            }

             after(grammarAccess.getKM3ClassAccess().getGroup_3()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__KM3Class__Group__3__Impl"


    // $ANTLR start "rule__KM3Class__Group__4"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:772:1: rule__KM3Class__Group__4 : rule__KM3Class__Group__4__Impl rule__KM3Class__Group__5 ;
    public final void rule__KM3Class__Group__4() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:776:1: ( rule__KM3Class__Group__4__Impl rule__KM3Class__Group__5 )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:777:2: rule__KM3Class__Group__4__Impl rule__KM3Class__Group__5
            {
            pushFollow(FOLLOW_rule__KM3Class__Group__4__Impl_in_rule__KM3Class__Group__41566);
            rule__KM3Class__Group__4__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__KM3Class__Group__5_in_rule__KM3Class__Group__41569);
            rule__KM3Class__Group__5();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__KM3Class__Group__4"


    // $ANTLR start "rule__KM3Class__Group__4__Impl"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:784:1: rule__KM3Class__Group__4__Impl : ( '{' ) ;
    public final void rule__KM3Class__Group__4__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:788:1: ( ( '{' ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:789:1: ( '{' )
            {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:789:1: ( '{' )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:790:1: '{'
            {
             before(grammarAccess.getKM3ClassAccess().getLeftCurlyBracketKeyword_4()); 
            match(input,13,FOLLOW_13_in_rule__KM3Class__Group__4__Impl1597); 
             after(grammarAccess.getKM3ClassAccess().getLeftCurlyBracketKeyword_4()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__KM3Class__Group__4__Impl"


    // $ANTLR start "rule__KM3Class__Group__5"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:803:1: rule__KM3Class__Group__5 : rule__KM3Class__Group__5__Impl rule__KM3Class__Group__6 ;
    public final void rule__KM3Class__Group__5() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:807:1: ( rule__KM3Class__Group__5__Impl rule__KM3Class__Group__6 )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:808:2: rule__KM3Class__Group__5__Impl rule__KM3Class__Group__6
            {
            pushFollow(FOLLOW_rule__KM3Class__Group__5__Impl_in_rule__KM3Class__Group__51628);
            rule__KM3Class__Group__5__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__KM3Class__Group__6_in_rule__KM3Class__Group__51631);
            rule__KM3Class__Group__6();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__KM3Class__Group__5"


    // $ANTLR start "rule__KM3Class__Group__5__Impl"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:815:1: rule__KM3Class__Group__5__Impl : ( ( rule__KM3Class__FeaturesAssignment_5 )* ) ;
    public final void rule__KM3Class__Group__5__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:819:1: ( ( ( rule__KM3Class__FeaturesAssignment_5 )* ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:820:1: ( ( rule__KM3Class__FeaturesAssignment_5 )* )
            {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:820:1: ( ( rule__KM3Class__FeaturesAssignment_5 )* )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:821:1: ( rule__KM3Class__FeaturesAssignment_5 )*
            {
             before(grammarAccess.getKM3ClassAccess().getFeaturesAssignment_5()); 
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:822:1: ( rule__KM3Class__FeaturesAssignment_5 )*
            loop9:
            do {
                int alt9=2;
                int LA9_0 = input.LA(1);

                if ( (LA9_0==17||LA9_0==20) ) {
                    alt9=1;
                }


                switch (alt9) {
            	case 1 :
            	    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:822:2: rule__KM3Class__FeaturesAssignment_5
            	    {
            	    pushFollow(FOLLOW_rule__KM3Class__FeaturesAssignment_5_in_rule__KM3Class__Group__5__Impl1658);
            	    rule__KM3Class__FeaturesAssignment_5();

            	    state._fsp--;


            	    }
            	    break;

            	default :
            	    break loop9;
                }
            } while (true);

             after(grammarAccess.getKM3ClassAccess().getFeaturesAssignment_5()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__KM3Class__Group__5__Impl"


    // $ANTLR start "rule__KM3Class__Group__6"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:832:1: rule__KM3Class__Group__6 : rule__KM3Class__Group__6__Impl ;
    public final void rule__KM3Class__Group__6() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:836:1: ( rule__KM3Class__Group__6__Impl )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:837:2: rule__KM3Class__Group__6__Impl
            {
            pushFollow(FOLLOW_rule__KM3Class__Group__6__Impl_in_rule__KM3Class__Group__61689);
            rule__KM3Class__Group__6__Impl();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__KM3Class__Group__6"


    // $ANTLR start "rule__KM3Class__Group__6__Impl"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:843:1: rule__KM3Class__Group__6__Impl : ( '}' ) ;
    public final void rule__KM3Class__Group__6__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:847:1: ( ( '}' ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:848:1: ( '}' )
            {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:848:1: ( '}' )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:849:1: '}'
            {
             before(grammarAccess.getKM3ClassAccess().getRightCurlyBracketKeyword_6()); 
            match(input,14,FOLLOW_14_in_rule__KM3Class__Group__6__Impl1717); 
             after(grammarAccess.getKM3ClassAccess().getRightCurlyBracketKeyword_6()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__KM3Class__Group__6__Impl"


    // $ANTLR start "rule__KM3Class__Group_3__0"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:876:1: rule__KM3Class__Group_3__0 : rule__KM3Class__Group_3__0__Impl rule__KM3Class__Group_3__1 ;
    public final void rule__KM3Class__Group_3__0() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:880:1: ( rule__KM3Class__Group_3__0__Impl rule__KM3Class__Group_3__1 )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:881:2: rule__KM3Class__Group_3__0__Impl rule__KM3Class__Group_3__1
            {
            pushFollow(FOLLOW_rule__KM3Class__Group_3__0__Impl_in_rule__KM3Class__Group_3__01762);
            rule__KM3Class__Group_3__0__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__KM3Class__Group_3__1_in_rule__KM3Class__Group_3__01765);
            rule__KM3Class__Group_3__1();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__KM3Class__Group_3__0"


    // $ANTLR start "rule__KM3Class__Group_3__0__Impl"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:888:1: rule__KM3Class__Group_3__0__Impl : ( 'extends' ) ;
    public final void rule__KM3Class__Group_3__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:892:1: ( ( 'extends' ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:893:1: ( 'extends' )
            {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:893:1: ( 'extends' )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:894:1: 'extends'
            {
             before(grammarAccess.getKM3ClassAccess().getExtendsKeyword_3_0()); 
            match(input,16,FOLLOW_16_in_rule__KM3Class__Group_3__0__Impl1793); 
             after(grammarAccess.getKM3ClassAccess().getExtendsKeyword_3_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__KM3Class__Group_3__0__Impl"


    // $ANTLR start "rule__KM3Class__Group_3__1"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:907:1: rule__KM3Class__Group_3__1 : rule__KM3Class__Group_3__1__Impl ;
    public final void rule__KM3Class__Group_3__1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:911:1: ( rule__KM3Class__Group_3__1__Impl )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:912:2: rule__KM3Class__Group_3__1__Impl
            {
            pushFollow(FOLLOW_rule__KM3Class__Group_3__1__Impl_in_rule__KM3Class__Group_3__11824);
            rule__KM3Class__Group_3__1__Impl();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__KM3Class__Group_3__1"


    // $ANTLR start "rule__KM3Class__Group_3__1__Impl"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:918:1: rule__KM3Class__Group_3__1__Impl : ( ( rule__KM3Class__SuperTypeAssignment_3_1 ) ) ;
    public final void rule__KM3Class__Group_3__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:922:1: ( ( ( rule__KM3Class__SuperTypeAssignment_3_1 ) ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:923:1: ( ( rule__KM3Class__SuperTypeAssignment_3_1 ) )
            {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:923:1: ( ( rule__KM3Class__SuperTypeAssignment_3_1 ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:924:1: ( rule__KM3Class__SuperTypeAssignment_3_1 )
            {
             before(grammarAccess.getKM3ClassAccess().getSuperTypeAssignment_3_1()); 
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:925:1: ( rule__KM3Class__SuperTypeAssignment_3_1 )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:925:2: rule__KM3Class__SuperTypeAssignment_3_1
            {
            pushFollow(FOLLOW_rule__KM3Class__SuperTypeAssignment_3_1_in_rule__KM3Class__Group_3__1__Impl1851);
            rule__KM3Class__SuperTypeAssignment_3_1();

            state._fsp--;


            }

             after(grammarAccess.getKM3ClassAccess().getSuperTypeAssignment_3_1()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__KM3Class__Group_3__1__Impl"


    // $ANTLR start "rule__Attribute__Group__0"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:939:1: rule__Attribute__Group__0 : rule__Attribute__Group__0__Impl rule__Attribute__Group__1 ;
    public final void rule__Attribute__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:943:1: ( rule__Attribute__Group__0__Impl rule__Attribute__Group__1 )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:944:2: rule__Attribute__Group__0__Impl rule__Attribute__Group__1
            {
            pushFollow(FOLLOW_rule__Attribute__Group__0__Impl_in_rule__Attribute__Group__01885);
            rule__Attribute__Group__0__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Attribute__Group__1_in_rule__Attribute__Group__01888);
            rule__Attribute__Group__1();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Attribute__Group__0"


    // $ANTLR start "rule__Attribute__Group__0__Impl"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:951:1: rule__Attribute__Group__0__Impl : ( 'attribute' ) ;
    public final void rule__Attribute__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:955:1: ( ( 'attribute' ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:956:1: ( 'attribute' )
            {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:956:1: ( 'attribute' )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:957:1: 'attribute'
            {
             before(grammarAccess.getAttributeAccess().getAttributeKeyword_0()); 
            match(input,17,FOLLOW_17_in_rule__Attribute__Group__0__Impl1916); 
             after(grammarAccess.getAttributeAccess().getAttributeKeyword_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Attribute__Group__0__Impl"


    // $ANTLR start "rule__Attribute__Group__1"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:970:1: rule__Attribute__Group__1 : rule__Attribute__Group__1__Impl rule__Attribute__Group__2 ;
    public final void rule__Attribute__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:974:1: ( rule__Attribute__Group__1__Impl rule__Attribute__Group__2 )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:975:2: rule__Attribute__Group__1__Impl rule__Attribute__Group__2
            {
            pushFollow(FOLLOW_rule__Attribute__Group__1__Impl_in_rule__Attribute__Group__11947);
            rule__Attribute__Group__1__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Attribute__Group__2_in_rule__Attribute__Group__11950);
            rule__Attribute__Group__2();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Attribute__Group__1"


    // $ANTLR start "rule__Attribute__Group__1__Impl"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:982:1: rule__Attribute__Group__1__Impl : ( ( rule__Attribute__NameAssignment_1 ) ) ;
    public final void rule__Attribute__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:986:1: ( ( ( rule__Attribute__NameAssignment_1 ) ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:987:1: ( ( rule__Attribute__NameAssignment_1 ) )
            {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:987:1: ( ( rule__Attribute__NameAssignment_1 ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:988:1: ( rule__Attribute__NameAssignment_1 )
            {
             before(grammarAccess.getAttributeAccess().getNameAssignment_1()); 
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:989:1: ( rule__Attribute__NameAssignment_1 )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:989:2: rule__Attribute__NameAssignment_1
            {
            pushFollow(FOLLOW_rule__Attribute__NameAssignment_1_in_rule__Attribute__Group__1__Impl1977);
            rule__Attribute__NameAssignment_1();

            state._fsp--;


            }

             after(grammarAccess.getAttributeAccess().getNameAssignment_1()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Attribute__Group__1__Impl"


    // $ANTLR start "rule__Attribute__Group__2"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:999:1: rule__Attribute__Group__2 : rule__Attribute__Group__2__Impl rule__Attribute__Group__3 ;
    public final void rule__Attribute__Group__2() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1003:1: ( rule__Attribute__Group__2__Impl rule__Attribute__Group__3 )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1004:2: rule__Attribute__Group__2__Impl rule__Attribute__Group__3
            {
            pushFollow(FOLLOW_rule__Attribute__Group__2__Impl_in_rule__Attribute__Group__22007);
            rule__Attribute__Group__2__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Attribute__Group__3_in_rule__Attribute__Group__22010);
            rule__Attribute__Group__3();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Attribute__Group__2"


    // $ANTLR start "rule__Attribute__Group__2__Impl"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1011:1: rule__Attribute__Group__2__Impl : ( ( rule__Attribute__MultiplicityAssignment_2 )? ) ;
    public final void rule__Attribute__Group__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1015:1: ( ( ( rule__Attribute__MultiplicityAssignment_2 )? ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1016:1: ( ( rule__Attribute__MultiplicityAssignment_2 )? )
            {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1016:1: ( ( rule__Attribute__MultiplicityAssignment_2 )? )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1017:1: ( rule__Attribute__MultiplicityAssignment_2 )?
            {
             before(grammarAccess.getAttributeAccess().getMultiplicityAssignment_2()); 
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1018:1: ( rule__Attribute__MultiplicityAssignment_2 )?
            int alt10=2;
            int LA10_0 = input.LA(1);

            if ( (LA10_0==22) ) {
                alt10=1;
            }
            switch (alt10) {
                case 1 :
                    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1018:2: rule__Attribute__MultiplicityAssignment_2
                    {
                    pushFollow(FOLLOW_rule__Attribute__MultiplicityAssignment_2_in_rule__Attribute__Group__2__Impl2037);
                    rule__Attribute__MultiplicityAssignment_2();

                    state._fsp--;


                    }
                    break;

            }

             after(grammarAccess.getAttributeAccess().getMultiplicityAssignment_2()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Attribute__Group__2__Impl"


    // $ANTLR start "rule__Attribute__Group__3"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1028:1: rule__Attribute__Group__3 : rule__Attribute__Group__3__Impl rule__Attribute__Group__4 ;
    public final void rule__Attribute__Group__3() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1032:1: ( rule__Attribute__Group__3__Impl rule__Attribute__Group__4 )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1033:2: rule__Attribute__Group__3__Impl rule__Attribute__Group__4
            {
            pushFollow(FOLLOW_rule__Attribute__Group__3__Impl_in_rule__Attribute__Group__32068);
            rule__Attribute__Group__3__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Attribute__Group__4_in_rule__Attribute__Group__32071);
            rule__Attribute__Group__4();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Attribute__Group__3"


    // $ANTLR start "rule__Attribute__Group__3__Impl"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1040:1: rule__Attribute__Group__3__Impl : ( ':' ) ;
    public final void rule__Attribute__Group__3__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1044:1: ( ( ':' ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1045:1: ( ':' )
            {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1045:1: ( ':' )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1046:1: ':'
            {
             before(grammarAccess.getAttributeAccess().getColonKeyword_3()); 
            match(input,18,FOLLOW_18_in_rule__Attribute__Group__3__Impl2099); 
             after(grammarAccess.getAttributeAccess().getColonKeyword_3()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Attribute__Group__3__Impl"


    // $ANTLR start "rule__Attribute__Group__4"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1059:1: rule__Attribute__Group__4 : rule__Attribute__Group__4__Impl rule__Attribute__Group__5 ;
    public final void rule__Attribute__Group__4() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1063:1: ( rule__Attribute__Group__4__Impl rule__Attribute__Group__5 )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1064:2: rule__Attribute__Group__4__Impl rule__Attribute__Group__5
            {
            pushFollow(FOLLOW_rule__Attribute__Group__4__Impl_in_rule__Attribute__Group__42130);
            rule__Attribute__Group__4__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Attribute__Group__5_in_rule__Attribute__Group__42133);
            rule__Attribute__Group__5();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Attribute__Group__4"


    // $ANTLR start "rule__Attribute__Group__4__Impl"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1071:1: rule__Attribute__Group__4__Impl : ( ( rule__Attribute__TypeRefAssignment_4 ) ) ;
    public final void rule__Attribute__Group__4__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1075:1: ( ( ( rule__Attribute__TypeRefAssignment_4 ) ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1076:1: ( ( rule__Attribute__TypeRefAssignment_4 ) )
            {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1076:1: ( ( rule__Attribute__TypeRefAssignment_4 ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1077:1: ( rule__Attribute__TypeRefAssignment_4 )
            {
             before(grammarAccess.getAttributeAccess().getTypeRefAssignment_4()); 
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1078:1: ( rule__Attribute__TypeRefAssignment_4 )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1078:2: rule__Attribute__TypeRefAssignment_4
            {
            pushFollow(FOLLOW_rule__Attribute__TypeRefAssignment_4_in_rule__Attribute__Group__4__Impl2160);
            rule__Attribute__TypeRefAssignment_4();

            state._fsp--;


            }

             after(grammarAccess.getAttributeAccess().getTypeRefAssignment_4()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Attribute__Group__4__Impl"


    // $ANTLR start "rule__Attribute__Group__5"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1088:1: rule__Attribute__Group__5 : rule__Attribute__Group__5__Impl ;
    public final void rule__Attribute__Group__5() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1092:1: ( rule__Attribute__Group__5__Impl )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1093:2: rule__Attribute__Group__5__Impl
            {
            pushFollow(FOLLOW_rule__Attribute__Group__5__Impl_in_rule__Attribute__Group__52190);
            rule__Attribute__Group__5__Impl();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Attribute__Group__5"


    // $ANTLR start "rule__Attribute__Group__5__Impl"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1099:1: rule__Attribute__Group__5__Impl : ( ';' ) ;
    public final void rule__Attribute__Group__5__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1103:1: ( ( ';' ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1104:1: ( ';' )
            {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1104:1: ( ';' )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1105:1: ';'
            {
             before(grammarAccess.getAttributeAccess().getSemicolonKeyword_5()); 
            match(input,19,FOLLOW_19_in_rule__Attribute__Group__5__Impl2218); 
             after(grammarAccess.getAttributeAccess().getSemicolonKeyword_5()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Attribute__Group__5__Impl"


    // $ANTLR start "rule__Reference__Group__0"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1130:1: rule__Reference__Group__0 : rule__Reference__Group__0__Impl rule__Reference__Group__1 ;
    public final void rule__Reference__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1134:1: ( rule__Reference__Group__0__Impl rule__Reference__Group__1 )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1135:2: rule__Reference__Group__0__Impl rule__Reference__Group__1
            {
            pushFollow(FOLLOW_rule__Reference__Group__0__Impl_in_rule__Reference__Group__02261);
            rule__Reference__Group__0__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Reference__Group__1_in_rule__Reference__Group__02264);
            rule__Reference__Group__1();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Reference__Group__0"


    // $ANTLR start "rule__Reference__Group__0__Impl"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1142:1: rule__Reference__Group__0__Impl : ( 'reference' ) ;
    public final void rule__Reference__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1146:1: ( ( 'reference' ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1147:1: ( 'reference' )
            {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1147:1: ( 'reference' )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1148:1: 'reference'
            {
             before(grammarAccess.getReferenceAccess().getReferenceKeyword_0()); 
            match(input,20,FOLLOW_20_in_rule__Reference__Group__0__Impl2292); 
             after(grammarAccess.getReferenceAccess().getReferenceKeyword_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Reference__Group__0__Impl"


    // $ANTLR start "rule__Reference__Group__1"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1161:1: rule__Reference__Group__1 : rule__Reference__Group__1__Impl rule__Reference__Group__2 ;
    public final void rule__Reference__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1165:1: ( rule__Reference__Group__1__Impl rule__Reference__Group__2 )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1166:2: rule__Reference__Group__1__Impl rule__Reference__Group__2
            {
            pushFollow(FOLLOW_rule__Reference__Group__1__Impl_in_rule__Reference__Group__12323);
            rule__Reference__Group__1__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Reference__Group__2_in_rule__Reference__Group__12326);
            rule__Reference__Group__2();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Reference__Group__1"


    // $ANTLR start "rule__Reference__Group__1__Impl"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1173:1: rule__Reference__Group__1__Impl : ( ( rule__Reference__NameAssignment_1 ) ) ;
    public final void rule__Reference__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1177:1: ( ( ( rule__Reference__NameAssignment_1 ) ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1178:1: ( ( rule__Reference__NameAssignment_1 ) )
            {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1178:1: ( ( rule__Reference__NameAssignment_1 ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1179:1: ( rule__Reference__NameAssignment_1 )
            {
             before(grammarAccess.getReferenceAccess().getNameAssignment_1()); 
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1180:1: ( rule__Reference__NameAssignment_1 )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1180:2: rule__Reference__NameAssignment_1
            {
            pushFollow(FOLLOW_rule__Reference__NameAssignment_1_in_rule__Reference__Group__1__Impl2353);
            rule__Reference__NameAssignment_1();

            state._fsp--;


            }

             after(grammarAccess.getReferenceAccess().getNameAssignment_1()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Reference__Group__1__Impl"


    // $ANTLR start "rule__Reference__Group__2"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1190:1: rule__Reference__Group__2 : rule__Reference__Group__2__Impl rule__Reference__Group__3 ;
    public final void rule__Reference__Group__2() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1194:1: ( rule__Reference__Group__2__Impl rule__Reference__Group__3 )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1195:2: rule__Reference__Group__2__Impl rule__Reference__Group__3
            {
            pushFollow(FOLLOW_rule__Reference__Group__2__Impl_in_rule__Reference__Group__22383);
            rule__Reference__Group__2__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Reference__Group__3_in_rule__Reference__Group__22386);
            rule__Reference__Group__3();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Reference__Group__2"


    // $ANTLR start "rule__Reference__Group__2__Impl"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1202:1: rule__Reference__Group__2__Impl : ( ( rule__Reference__MultiplicityAssignment_2 )? ) ;
    public final void rule__Reference__Group__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1206:1: ( ( ( rule__Reference__MultiplicityAssignment_2 )? ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1207:1: ( ( rule__Reference__MultiplicityAssignment_2 )? )
            {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1207:1: ( ( rule__Reference__MultiplicityAssignment_2 )? )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1208:1: ( rule__Reference__MultiplicityAssignment_2 )?
            {
             before(grammarAccess.getReferenceAccess().getMultiplicityAssignment_2()); 
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1209:1: ( rule__Reference__MultiplicityAssignment_2 )?
            int alt11=2;
            int LA11_0 = input.LA(1);

            if ( (LA11_0==22) ) {
                alt11=1;
            }
            switch (alt11) {
                case 1 :
                    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1209:2: rule__Reference__MultiplicityAssignment_2
                    {
                    pushFollow(FOLLOW_rule__Reference__MultiplicityAssignment_2_in_rule__Reference__Group__2__Impl2413);
                    rule__Reference__MultiplicityAssignment_2();

                    state._fsp--;


                    }
                    break;

            }

             after(grammarAccess.getReferenceAccess().getMultiplicityAssignment_2()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Reference__Group__2__Impl"


    // $ANTLR start "rule__Reference__Group__3"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1219:1: rule__Reference__Group__3 : rule__Reference__Group__3__Impl rule__Reference__Group__4 ;
    public final void rule__Reference__Group__3() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1223:1: ( rule__Reference__Group__3__Impl rule__Reference__Group__4 )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1224:2: rule__Reference__Group__3__Impl rule__Reference__Group__4
            {
            pushFollow(FOLLOW_rule__Reference__Group__3__Impl_in_rule__Reference__Group__32444);
            rule__Reference__Group__3__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Reference__Group__4_in_rule__Reference__Group__32447);
            rule__Reference__Group__4();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Reference__Group__3"


    // $ANTLR start "rule__Reference__Group__3__Impl"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1231:1: rule__Reference__Group__3__Impl : ( ( rule__Reference__ContainerAssignment_3 )? ) ;
    public final void rule__Reference__Group__3__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1235:1: ( ( ( rule__Reference__ContainerAssignment_3 )? ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1236:1: ( ( rule__Reference__ContainerAssignment_3 )? )
            {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1236:1: ( ( rule__Reference__ContainerAssignment_3 )? )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1237:1: ( rule__Reference__ContainerAssignment_3 )?
            {
             before(grammarAccess.getReferenceAccess().getContainerAssignment_3()); 
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1238:1: ( rule__Reference__ContainerAssignment_3 )?
            int alt12=2;
            int LA12_0 = input.LA(1);

            if ( (LA12_0==27) ) {
                alt12=1;
            }
            switch (alt12) {
                case 1 :
                    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1238:2: rule__Reference__ContainerAssignment_3
                    {
                    pushFollow(FOLLOW_rule__Reference__ContainerAssignment_3_in_rule__Reference__Group__3__Impl2474);
                    rule__Reference__ContainerAssignment_3();

                    state._fsp--;


                    }
                    break;

            }

             after(grammarAccess.getReferenceAccess().getContainerAssignment_3()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Reference__Group__3__Impl"


    // $ANTLR start "rule__Reference__Group__4"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1248:1: rule__Reference__Group__4 : rule__Reference__Group__4__Impl rule__Reference__Group__5 ;
    public final void rule__Reference__Group__4() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1252:1: ( rule__Reference__Group__4__Impl rule__Reference__Group__5 )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1253:2: rule__Reference__Group__4__Impl rule__Reference__Group__5
            {
            pushFollow(FOLLOW_rule__Reference__Group__4__Impl_in_rule__Reference__Group__42505);
            rule__Reference__Group__4__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Reference__Group__5_in_rule__Reference__Group__42508);
            rule__Reference__Group__5();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Reference__Group__4"


    // $ANTLR start "rule__Reference__Group__4__Impl"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1260:1: rule__Reference__Group__4__Impl : ( ':' ) ;
    public final void rule__Reference__Group__4__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1264:1: ( ( ':' ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1265:1: ( ':' )
            {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1265:1: ( ':' )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1266:1: ':'
            {
             before(grammarAccess.getReferenceAccess().getColonKeyword_4()); 
            match(input,18,FOLLOW_18_in_rule__Reference__Group__4__Impl2536); 
             after(grammarAccess.getReferenceAccess().getColonKeyword_4()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Reference__Group__4__Impl"


    // $ANTLR start "rule__Reference__Group__5"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1279:1: rule__Reference__Group__5 : rule__Reference__Group__5__Impl rule__Reference__Group__6 ;
    public final void rule__Reference__Group__5() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1283:1: ( rule__Reference__Group__5__Impl rule__Reference__Group__6 )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1284:2: rule__Reference__Group__5__Impl rule__Reference__Group__6
            {
            pushFollow(FOLLOW_rule__Reference__Group__5__Impl_in_rule__Reference__Group__52567);
            rule__Reference__Group__5__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Reference__Group__6_in_rule__Reference__Group__52570);
            rule__Reference__Group__6();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Reference__Group__5"


    // $ANTLR start "rule__Reference__Group__5__Impl"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1291:1: rule__Reference__Group__5__Impl : ( ( rule__Reference__TypeRefAssignment_5 ) ) ;
    public final void rule__Reference__Group__5__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1295:1: ( ( ( rule__Reference__TypeRefAssignment_5 ) ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1296:1: ( ( rule__Reference__TypeRefAssignment_5 ) )
            {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1296:1: ( ( rule__Reference__TypeRefAssignment_5 ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1297:1: ( rule__Reference__TypeRefAssignment_5 )
            {
             before(grammarAccess.getReferenceAccess().getTypeRefAssignment_5()); 
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1298:1: ( rule__Reference__TypeRefAssignment_5 )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1298:2: rule__Reference__TypeRefAssignment_5
            {
            pushFollow(FOLLOW_rule__Reference__TypeRefAssignment_5_in_rule__Reference__Group__5__Impl2597);
            rule__Reference__TypeRefAssignment_5();

            state._fsp--;


            }

             after(grammarAccess.getReferenceAccess().getTypeRefAssignment_5()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Reference__Group__5__Impl"


    // $ANTLR start "rule__Reference__Group__6"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1308:1: rule__Reference__Group__6 : rule__Reference__Group__6__Impl rule__Reference__Group__7 ;
    public final void rule__Reference__Group__6() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1312:1: ( rule__Reference__Group__6__Impl rule__Reference__Group__7 )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1313:2: rule__Reference__Group__6__Impl rule__Reference__Group__7
            {
            pushFollow(FOLLOW_rule__Reference__Group__6__Impl_in_rule__Reference__Group__62627);
            rule__Reference__Group__6__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Reference__Group__7_in_rule__Reference__Group__62630);
            rule__Reference__Group__7();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Reference__Group__6"


    // $ANTLR start "rule__Reference__Group__6__Impl"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1320:1: rule__Reference__Group__6__Impl : ( ( rule__Reference__Group_6__0 )? ) ;
    public final void rule__Reference__Group__6__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1324:1: ( ( ( rule__Reference__Group_6__0 )? ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1325:1: ( ( rule__Reference__Group_6__0 )? )
            {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1325:1: ( ( rule__Reference__Group_6__0 )? )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1326:1: ( rule__Reference__Group_6__0 )?
            {
             before(grammarAccess.getReferenceAccess().getGroup_6()); 
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1327:1: ( rule__Reference__Group_6__0 )?
            int alt13=2;
            int LA13_0 = input.LA(1);

            if ( (LA13_0==21) ) {
                alt13=1;
            }
            switch (alt13) {
                case 1 :
                    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1327:2: rule__Reference__Group_6__0
                    {
                    pushFollow(FOLLOW_rule__Reference__Group_6__0_in_rule__Reference__Group__6__Impl2657);
                    rule__Reference__Group_6__0();

                    state._fsp--;


                    }
                    break;

            }

             after(grammarAccess.getReferenceAccess().getGroup_6()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Reference__Group__6__Impl"


    // $ANTLR start "rule__Reference__Group__7"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1337:1: rule__Reference__Group__7 : rule__Reference__Group__7__Impl ;
    public final void rule__Reference__Group__7() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1341:1: ( rule__Reference__Group__7__Impl )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1342:2: rule__Reference__Group__7__Impl
            {
            pushFollow(FOLLOW_rule__Reference__Group__7__Impl_in_rule__Reference__Group__72688);
            rule__Reference__Group__7__Impl();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Reference__Group__7"


    // $ANTLR start "rule__Reference__Group__7__Impl"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1348:1: rule__Reference__Group__7__Impl : ( ';' ) ;
    public final void rule__Reference__Group__7__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1352:1: ( ( ';' ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1353:1: ( ';' )
            {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1353:1: ( ';' )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1354:1: ';'
            {
             before(grammarAccess.getReferenceAccess().getSemicolonKeyword_7()); 
            match(input,19,FOLLOW_19_in_rule__Reference__Group__7__Impl2716); 
             after(grammarAccess.getReferenceAccess().getSemicolonKeyword_7()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Reference__Group__7__Impl"


    // $ANTLR start "rule__Reference__Group_6__0"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1383:1: rule__Reference__Group_6__0 : rule__Reference__Group_6__0__Impl rule__Reference__Group_6__1 ;
    public final void rule__Reference__Group_6__0() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1387:1: ( rule__Reference__Group_6__0__Impl rule__Reference__Group_6__1 )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1388:2: rule__Reference__Group_6__0__Impl rule__Reference__Group_6__1
            {
            pushFollow(FOLLOW_rule__Reference__Group_6__0__Impl_in_rule__Reference__Group_6__02763);
            rule__Reference__Group_6__0__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Reference__Group_6__1_in_rule__Reference__Group_6__02766);
            rule__Reference__Group_6__1();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Reference__Group_6__0"


    // $ANTLR start "rule__Reference__Group_6__0__Impl"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1395:1: rule__Reference__Group_6__0__Impl : ( 'oppositeOf' ) ;
    public final void rule__Reference__Group_6__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1399:1: ( ( 'oppositeOf' ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1400:1: ( 'oppositeOf' )
            {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1400:1: ( 'oppositeOf' )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1401:1: 'oppositeOf'
            {
             before(grammarAccess.getReferenceAccess().getOppositeOfKeyword_6_0()); 
            match(input,21,FOLLOW_21_in_rule__Reference__Group_6__0__Impl2794); 
             after(grammarAccess.getReferenceAccess().getOppositeOfKeyword_6_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Reference__Group_6__0__Impl"


    // $ANTLR start "rule__Reference__Group_6__1"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1414:1: rule__Reference__Group_6__1 : rule__Reference__Group_6__1__Impl ;
    public final void rule__Reference__Group_6__1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1418:1: ( rule__Reference__Group_6__1__Impl )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1419:2: rule__Reference__Group_6__1__Impl
            {
            pushFollow(FOLLOW_rule__Reference__Group_6__1__Impl_in_rule__Reference__Group_6__12825);
            rule__Reference__Group_6__1__Impl();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Reference__Group_6__1"


    // $ANTLR start "rule__Reference__Group_6__1__Impl"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1425:1: rule__Reference__Group_6__1__Impl : ( ( rule__Reference__OppositeAssignment_6_1 ) ) ;
    public final void rule__Reference__Group_6__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1429:1: ( ( ( rule__Reference__OppositeAssignment_6_1 ) ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1430:1: ( ( rule__Reference__OppositeAssignment_6_1 ) )
            {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1430:1: ( ( rule__Reference__OppositeAssignment_6_1 ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1431:1: ( rule__Reference__OppositeAssignment_6_1 )
            {
             before(grammarAccess.getReferenceAccess().getOppositeAssignment_6_1()); 
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1432:1: ( rule__Reference__OppositeAssignment_6_1 )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1432:2: rule__Reference__OppositeAssignment_6_1
            {
            pushFollow(FOLLOW_rule__Reference__OppositeAssignment_6_1_in_rule__Reference__Group_6__1__Impl2852);
            rule__Reference__OppositeAssignment_6_1();

            state._fsp--;


            }

             after(grammarAccess.getReferenceAccess().getOppositeAssignment_6_1()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Reference__Group_6__1__Impl"


    // $ANTLR start "rule__Multiplicity__Group__0"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1446:1: rule__Multiplicity__Group__0 : rule__Multiplicity__Group__0__Impl rule__Multiplicity__Group__1 ;
    public final void rule__Multiplicity__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1450:1: ( rule__Multiplicity__Group__0__Impl rule__Multiplicity__Group__1 )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1451:2: rule__Multiplicity__Group__0__Impl rule__Multiplicity__Group__1
            {
            pushFollow(FOLLOW_rule__Multiplicity__Group__0__Impl_in_rule__Multiplicity__Group__02886);
            rule__Multiplicity__Group__0__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Multiplicity__Group__1_in_rule__Multiplicity__Group__02889);
            rule__Multiplicity__Group__1();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Multiplicity__Group__0"


    // $ANTLR start "rule__Multiplicity__Group__0__Impl"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1458:1: rule__Multiplicity__Group__0__Impl : ( '[' ) ;
    public final void rule__Multiplicity__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1462:1: ( ( '[' ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1463:1: ( '[' )
            {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1463:1: ( '[' )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1464:1: '['
            {
             before(grammarAccess.getMultiplicityAccess().getLeftSquareBracketKeyword_0()); 
            match(input,22,FOLLOW_22_in_rule__Multiplicity__Group__0__Impl2917); 
             after(grammarAccess.getMultiplicityAccess().getLeftSquareBracketKeyword_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Multiplicity__Group__0__Impl"


    // $ANTLR start "rule__Multiplicity__Group__1"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1477:1: rule__Multiplicity__Group__1 : rule__Multiplicity__Group__1__Impl rule__Multiplicity__Group__2 ;
    public final void rule__Multiplicity__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1481:1: ( rule__Multiplicity__Group__1__Impl rule__Multiplicity__Group__2 )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1482:2: rule__Multiplicity__Group__1__Impl rule__Multiplicity__Group__2
            {
            pushFollow(FOLLOW_rule__Multiplicity__Group__1__Impl_in_rule__Multiplicity__Group__12948);
            rule__Multiplicity__Group__1__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Multiplicity__Group__2_in_rule__Multiplicity__Group__12951);
            rule__Multiplicity__Group__2();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Multiplicity__Group__1"


    // $ANTLR start "rule__Multiplicity__Group__1__Impl"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1489:1: rule__Multiplicity__Group__1__Impl : ( ( rule__Multiplicity__Alternatives_1 ) ) ;
    public final void rule__Multiplicity__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1493:1: ( ( ( rule__Multiplicity__Alternatives_1 ) ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1494:1: ( ( rule__Multiplicity__Alternatives_1 ) )
            {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1494:1: ( ( rule__Multiplicity__Alternatives_1 ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1495:1: ( rule__Multiplicity__Alternatives_1 )
            {
             before(grammarAccess.getMultiplicityAccess().getAlternatives_1()); 
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1496:1: ( rule__Multiplicity__Alternatives_1 )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1496:2: rule__Multiplicity__Alternatives_1
            {
            pushFollow(FOLLOW_rule__Multiplicity__Alternatives_1_in_rule__Multiplicity__Group__1__Impl2978);
            rule__Multiplicity__Alternatives_1();

            state._fsp--;


            }

             after(grammarAccess.getMultiplicityAccess().getAlternatives_1()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Multiplicity__Group__1__Impl"


    // $ANTLR start "rule__Multiplicity__Group__2"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1506:1: rule__Multiplicity__Group__2 : rule__Multiplicity__Group__2__Impl rule__Multiplicity__Group__3 ;
    public final void rule__Multiplicity__Group__2() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1510:1: ( rule__Multiplicity__Group__2__Impl rule__Multiplicity__Group__3 )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1511:2: rule__Multiplicity__Group__2__Impl rule__Multiplicity__Group__3
            {
            pushFollow(FOLLOW_rule__Multiplicity__Group__2__Impl_in_rule__Multiplicity__Group__23008);
            rule__Multiplicity__Group__2__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Multiplicity__Group__3_in_rule__Multiplicity__Group__23011);
            rule__Multiplicity__Group__3();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Multiplicity__Group__2"


    // $ANTLR start "rule__Multiplicity__Group__2__Impl"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1518:1: rule__Multiplicity__Group__2__Impl : ( ']' ) ;
    public final void rule__Multiplicity__Group__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1522:1: ( ( ']' ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1523:1: ( ']' )
            {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1523:1: ( ']' )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1524:1: ']'
            {
             before(grammarAccess.getMultiplicityAccess().getRightSquareBracketKeyword_2()); 
            match(input,23,FOLLOW_23_in_rule__Multiplicity__Group__2__Impl3039); 
             after(grammarAccess.getMultiplicityAccess().getRightSquareBracketKeyword_2()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Multiplicity__Group__2__Impl"


    // $ANTLR start "rule__Multiplicity__Group__3"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1537:1: rule__Multiplicity__Group__3 : rule__Multiplicity__Group__3__Impl ;
    public final void rule__Multiplicity__Group__3() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1541:1: ( rule__Multiplicity__Group__3__Impl )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1542:2: rule__Multiplicity__Group__3__Impl
            {
            pushFollow(FOLLOW_rule__Multiplicity__Group__3__Impl_in_rule__Multiplicity__Group__33070);
            rule__Multiplicity__Group__3__Impl();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Multiplicity__Group__3"


    // $ANTLR start "rule__Multiplicity__Group__3__Impl"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1548:1: rule__Multiplicity__Group__3__Impl : ( ( rule__Multiplicity__OrderedAssignment_3 )? ) ;
    public final void rule__Multiplicity__Group__3__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1552:1: ( ( ( rule__Multiplicity__OrderedAssignment_3 )? ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1553:1: ( ( rule__Multiplicity__OrderedAssignment_3 )? )
            {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1553:1: ( ( rule__Multiplicity__OrderedAssignment_3 )? )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1554:1: ( rule__Multiplicity__OrderedAssignment_3 )?
            {
             before(grammarAccess.getMultiplicityAccess().getOrderedAssignment_3()); 
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1555:1: ( rule__Multiplicity__OrderedAssignment_3 )?
            int alt14=2;
            int LA14_0 = input.LA(1);

            if ( (LA14_0==28) ) {
                alt14=1;
            }
            switch (alt14) {
                case 1 :
                    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1555:2: rule__Multiplicity__OrderedAssignment_3
                    {
                    pushFollow(FOLLOW_rule__Multiplicity__OrderedAssignment_3_in_rule__Multiplicity__Group__3__Impl3097);
                    rule__Multiplicity__OrderedAssignment_3();

                    state._fsp--;


                    }
                    break;

            }

             after(grammarAccess.getMultiplicityAccess().getOrderedAssignment_3()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Multiplicity__Group__3__Impl"


    // $ANTLR start "rule__Multiplicity__Group_1_0__0"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1573:1: rule__Multiplicity__Group_1_0__0 : rule__Multiplicity__Group_1_0__0__Impl rule__Multiplicity__Group_1_0__1 ;
    public final void rule__Multiplicity__Group_1_0__0() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1577:1: ( rule__Multiplicity__Group_1_0__0__Impl rule__Multiplicity__Group_1_0__1 )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1578:2: rule__Multiplicity__Group_1_0__0__Impl rule__Multiplicity__Group_1_0__1
            {
            pushFollow(FOLLOW_rule__Multiplicity__Group_1_0__0__Impl_in_rule__Multiplicity__Group_1_0__03136);
            rule__Multiplicity__Group_1_0__0__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Multiplicity__Group_1_0__1_in_rule__Multiplicity__Group_1_0__03139);
            rule__Multiplicity__Group_1_0__1();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Multiplicity__Group_1_0__0"


    // $ANTLR start "rule__Multiplicity__Group_1_0__0__Impl"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1585:1: rule__Multiplicity__Group_1_0__0__Impl : ( ( rule__Multiplicity__LowerBoundAssignment_1_0_0 ) ) ;
    public final void rule__Multiplicity__Group_1_0__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1589:1: ( ( ( rule__Multiplicity__LowerBoundAssignment_1_0_0 ) ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1590:1: ( ( rule__Multiplicity__LowerBoundAssignment_1_0_0 ) )
            {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1590:1: ( ( rule__Multiplicity__LowerBoundAssignment_1_0_0 ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1591:1: ( rule__Multiplicity__LowerBoundAssignment_1_0_0 )
            {
             before(grammarAccess.getMultiplicityAccess().getLowerBoundAssignment_1_0_0()); 
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1592:1: ( rule__Multiplicity__LowerBoundAssignment_1_0_0 )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1592:2: rule__Multiplicity__LowerBoundAssignment_1_0_0
            {
            pushFollow(FOLLOW_rule__Multiplicity__LowerBoundAssignment_1_0_0_in_rule__Multiplicity__Group_1_0__0__Impl3166);
            rule__Multiplicity__LowerBoundAssignment_1_0_0();

            state._fsp--;


            }

             after(grammarAccess.getMultiplicityAccess().getLowerBoundAssignment_1_0_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Multiplicity__Group_1_0__0__Impl"


    // $ANTLR start "rule__Multiplicity__Group_1_0__1"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1602:1: rule__Multiplicity__Group_1_0__1 : rule__Multiplicity__Group_1_0__1__Impl ;
    public final void rule__Multiplicity__Group_1_0__1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1606:1: ( rule__Multiplicity__Group_1_0__1__Impl )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1607:2: rule__Multiplicity__Group_1_0__1__Impl
            {
            pushFollow(FOLLOW_rule__Multiplicity__Group_1_0__1__Impl_in_rule__Multiplicity__Group_1_0__13196);
            rule__Multiplicity__Group_1_0__1__Impl();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Multiplicity__Group_1_0__1"


    // $ANTLR start "rule__Multiplicity__Group_1_0__1__Impl"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1613:1: rule__Multiplicity__Group_1_0__1__Impl : ( ( rule__Multiplicity__Group_1_0_1__0 )? ) ;
    public final void rule__Multiplicity__Group_1_0__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1617:1: ( ( ( rule__Multiplicity__Group_1_0_1__0 )? ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1618:1: ( ( rule__Multiplicity__Group_1_0_1__0 )? )
            {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1618:1: ( ( rule__Multiplicity__Group_1_0_1__0 )? )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1619:1: ( rule__Multiplicity__Group_1_0_1__0 )?
            {
             before(grammarAccess.getMultiplicityAccess().getGroup_1_0_1()); 
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1620:1: ( rule__Multiplicity__Group_1_0_1__0 )?
            int alt15=2;
            int LA15_0 = input.LA(1);

            if ( (LA15_0==24) ) {
                alt15=1;
            }
            switch (alt15) {
                case 1 :
                    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1620:2: rule__Multiplicity__Group_1_0_1__0
                    {
                    pushFollow(FOLLOW_rule__Multiplicity__Group_1_0_1__0_in_rule__Multiplicity__Group_1_0__1__Impl3223);
                    rule__Multiplicity__Group_1_0_1__0();

                    state._fsp--;


                    }
                    break;

            }

             after(grammarAccess.getMultiplicityAccess().getGroup_1_0_1()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Multiplicity__Group_1_0__1__Impl"


    // $ANTLR start "rule__Multiplicity__Group_1_0_1__0"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1634:1: rule__Multiplicity__Group_1_0_1__0 : rule__Multiplicity__Group_1_0_1__0__Impl rule__Multiplicity__Group_1_0_1__1 ;
    public final void rule__Multiplicity__Group_1_0_1__0() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1638:1: ( rule__Multiplicity__Group_1_0_1__0__Impl rule__Multiplicity__Group_1_0_1__1 )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1639:2: rule__Multiplicity__Group_1_0_1__0__Impl rule__Multiplicity__Group_1_0_1__1
            {
            pushFollow(FOLLOW_rule__Multiplicity__Group_1_0_1__0__Impl_in_rule__Multiplicity__Group_1_0_1__03258);
            rule__Multiplicity__Group_1_0_1__0__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Multiplicity__Group_1_0_1__1_in_rule__Multiplicity__Group_1_0_1__03261);
            rule__Multiplicity__Group_1_0_1__1();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Multiplicity__Group_1_0_1__0"


    // $ANTLR start "rule__Multiplicity__Group_1_0_1__0__Impl"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1646:1: rule__Multiplicity__Group_1_0_1__0__Impl : ( '-' ) ;
    public final void rule__Multiplicity__Group_1_0_1__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1650:1: ( ( '-' ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1651:1: ( '-' )
            {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1651:1: ( '-' )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1652:1: '-'
            {
             before(grammarAccess.getMultiplicityAccess().getHyphenMinusKeyword_1_0_1_0()); 
            match(input,24,FOLLOW_24_in_rule__Multiplicity__Group_1_0_1__0__Impl3289); 
             after(grammarAccess.getMultiplicityAccess().getHyphenMinusKeyword_1_0_1_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Multiplicity__Group_1_0_1__0__Impl"


    // $ANTLR start "rule__Multiplicity__Group_1_0_1__1"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1665:1: rule__Multiplicity__Group_1_0_1__1 : rule__Multiplicity__Group_1_0_1__1__Impl ;
    public final void rule__Multiplicity__Group_1_0_1__1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1669:1: ( rule__Multiplicity__Group_1_0_1__1__Impl )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1670:2: rule__Multiplicity__Group_1_0_1__1__Impl
            {
            pushFollow(FOLLOW_rule__Multiplicity__Group_1_0_1__1__Impl_in_rule__Multiplicity__Group_1_0_1__13320);
            rule__Multiplicity__Group_1_0_1__1__Impl();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Multiplicity__Group_1_0_1__1"


    // $ANTLR start "rule__Multiplicity__Group_1_0_1__1__Impl"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1676:1: rule__Multiplicity__Group_1_0_1__1__Impl : ( ( rule__Multiplicity__Alternatives_1_0_1_1 ) ) ;
    public final void rule__Multiplicity__Group_1_0_1__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1680:1: ( ( ( rule__Multiplicity__Alternatives_1_0_1_1 ) ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1681:1: ( ( rule__Multiplicity__Alternatives_1_0_1_1 ) )
            {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1681:1: ( ( rule__Multiplicity__Alternatives_1_0_1_1 ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1682:1: ( rule__Multiplicity__Alternatives_1_0_1_1 )
            {
             before(grammarAccess.getMultiplicityAccess().getAlternatives_1_0_1_1()); 
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1683:1: ( rule__Multiplicity__Alternatives_1_0_1_1 )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1683:2: rule__Multiplicity__Alternatives_1_0_1_1
            {
            pushFollow(FOLLOW_rule__Multiplicity__Alternatives_1_0_1_1_in_rule__Multiplicity__Group_1_0_1__1__Impl3347);
            rule__Multiplicity__Alternatives_1_0_1_1();

            state._fsp--;


            }

             after(grammarAccess.getMultiplicityAccess().getAlternatives_1_0_1_1()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Multiplicity__Group_1_0_1__1__Impl"


    // $ANTLR start "rule__Datatype__Group__0"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1697:1: rule__Datatype__Group__0 : rule__Datatype__Group__0__Impl rule__Datatype__Group__1 ;
    public final void rule__Datatype__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1701:1: ( rule__Datatype__Group__0__Impl rule__Datatype__Group__1 )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1702:2: rule__Datatype__Group__0__Impl rule__Datatype__Group__1
            {
            pushFollow(FOLLOW_rule__Datatype__Group__0__Impl_in_rule__Datatype__Group__03381);
            rule__Datatype__Group__0__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Datatype__Group__1_in_rule__Datatype__Group__03384);
            rule__Datatype__Group__1();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Datatype__Group__0"


    // $ANTLR start "rule__Datatype__Group__0__Impl"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1709:1: rule__Datatype__Group__0__Impl : ( ( rule__Datatype__DatatypeAssignment_0 ) ) ;
    public final void rule__Datatype__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1713:1: ( ( ( rule__Datatype__DatatypeAssignment_0 ) ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1714:1: ( ( rule__Datatype__DatatypeAssignment_0 ) )
            {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1714:1: ( ( rule__Datatype__DatatypeAssignment_0 ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1715:1: ( rule__Datatype__DatatypeAssignment_0 )
            {
             before(grammarAccess.getDatatypeAccess().getDatatypeAssignment_0()); 
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1716:1: ( rule__Datatype__DatatypeAssignment_0 )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1716:2: rule__Datatype__DatatypeAssignment_0
            {
            pushFollow(FOLLOW_rule__Datatype__DatatypeAssignment_0_in_rule__Datatype__Group__0__Impl3411);
            rule__Datatype__DatatypeAssignment_0();

            state._fsp--;


            }

             after(grammarAccess.getDatatypeAccess().getDatatypeAssignment_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Datatype__Group__0__Impl"


    // $ANTLR start "rule__Datatype__Group__1"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1726:1: rule__Datatype__Group__1 : rule__Datatype__Group__1__Impl rule__Datatype__Group__2 ;
    public final void rule__Datatype__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1730:1: ( rule__Datatype__Group__1__Impl rule__Datatype__Group__2 )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1731:2: rule__Datatype__Group__1__Impl rule__Datatype__Group__2
            {
            pushFollow(FOLLOW_rule__Datatype__Group__1__Impl_in_rule__Datatype__Group__13441);
            rule__Datatype__Group__1__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Datatype__Group__2_in_rule__Datatype__Group__13444);
            rule__Datatype__Group__2();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Datatype__Group__1"


    // $ANTLR start "rule__Datatype__Group__1__Impl"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1738:1: rule__Datatype__Group__1__Impl : ( ( rule__Datatype__NameAssignment_1 ) ) ;
    public final void rule__Datatype__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1742:1: ( ( ( rule__Datatype__NameAssignment_1 ) ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1743:1: ( ( rule__Datatype__NameAssignment_1 ) )
            {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1743:1: ( ( rule__Datatype__NameAssignment_1 ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1744:1: ( rule__Datatype__NameAssignment_1 )
            {
             before(grammarAccess.getDatatypeAccess().getNameAssignment_1()); 
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1745:1: ( rule__Datatype__NameAssignment_1 )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1745:2: rule__Datatype__NameAssignment_1
            {
            pushFollow(FOLLOW_rule__Datatype__NameAssignment_1_in_rule__Datatype__Group__1__Impl3471);
            rule__Datatype__NameAssignment_1();

            state._fsp--;


            }

             after(grammarAccess.getDatatypeAccess().getNameAssignment_1()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Datatype__Group__1__Impl"


    // $ANTLR start "rule__Datatype__Group__2"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1755:1: rule__Datatype__Group__2 : rule__Datatype__Group__2__Impl ;
    public final void rule__Datatype__Group__2() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1759:1: ( rule__Datatype__Group__2__Impl )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1760:2: rule__Datatype__Group__2__Impl
            {
            pushFollow(FOLLOW_rule__Datatype__Group__2__Impl_in_rule__Datatype__Group__23501);
            rule__Datatype__Group__2__Impl();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Datatype__Group__2"


    // $ANTLR start "rule__Datatype__Group__2__Impl"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1766:1: rule__Datatype__Group__2__Impl : ( ';' ) ;
    public final void rule__Datatype__Group__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1770:1: ( ( ';' ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1771:1: ( ';' )
            {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1771:1: ( ';' )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1772:1: ';'
            {
             before(grammarAccess.getDatatypeAccess().getSemicolonKeyword_2()); 
            match(input,19,FOLLOW_19_in_rule__Datatype__Group__2__Impl3529); 
             after(grammarAccess.getDatatypeAccess().getSemicolonKeyword_2()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Datatype__Group__2__Impl"


    // $ANTLR start "rule__Enumeration__Group__0"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1791:1: rule__Enumeration__Group__0 : rule__Enumeration__Group__0__Impl rule__Enumeration__Group__1 ;
    public final void rule__Enumeration__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1795:1: ( rule__Enumeration__Group__0__Impl rule__Enumeration__Group__1 )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1796:2: rule__Enumeration__Group__0__Impl rule__Enumeration__Group__1
            {
            pushFollow(FOLLOW_rule__Enumeration__Group__0__Impl_in_rule__Enumeration__Group__03566);
            rule__Enumeration__Group__0__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Enumeration__Group__1_in_rule__Enumeration__Group__03569);
            rule__Enumeration__Group__1();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Enumeration__Group__0"


    // $ANTLR start "rule__Enumeration__Group__0__Impl"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1803:1: rule__Enumeration__Group__0__Impl : ( ( rule__Enumeration__EnumerationAssignment_0 ) ) ;
    public final void rule__Enumeration__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1807:1: ( ( ( rule__Enumeration__EnumerationAssignment_0 ) ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1808:1: ( ( rule__Enumeration__EnumerationAssignment_0 ) )
            {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1808:1: ( ( rule__Enumeration__EnumerationAssignment_0 ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1809:1: ( rule__Enumeration__EnumerationAssignment_0 )
            {
             before(grammarAccess.getEnumerationAccess().getEnumerationAssignment_0()); 
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1810:1: ( rule__Enumeration__EnumerationAssignment_0 )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1810:2: rule__Enumeration__EnumerationAssignment_0
            {
            pushFollow(FOLLOW_rule__Enumeration__EnumerationAssignment_0_in_rule__Enumeration__Group__0__Impl3596);
            rule__Enumeration__EnumerationAssignment_0();

            state._fsp--;


            }

             after(grammarAccess.getEnumerationAccess().getEnumerationAssignment_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Enumeration__Group__0__Impl"


    // $ANTLR start "rule__Enumeration__Group__1"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1820:1: rule__Enumeration__Group__1 : rule__Enumeration__Group__1__Impl rule__Enumeration__Group__2 ;
    public final void rule__Enumeration__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1824:1: ( rule__Enumeration__Group__1__Impl rule__Enumeration__Group__2 )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1825:2: rule__Enumeration__Group__1__Impl rule__Enumeration__Group__2
            {
            pushFollow(FOLLOW_rule__Enumeration__Group__1__Impl_in_rule__Enumeration__Group__13626);
            rule__Enumeration__Group__1__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Enumeration__Group__2_in_rule__Enumeration__Group__13629);
            rule__Enumeration__Group__2();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Enumeration__Group__1"


    // $ANTLR start "rule__Enumeration__Group__1__Impl"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1832:1: rule__Enumeration__Group__1__Impl : ( ( rule__Enumeration__NameAssignment_1 ) ) ;
    public final void rule__Enumeration__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1836:1: ( ( ( rule__Enumeration__NameAssignment_1 ) ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1837:1: ( ( rule__Enumeration__NameAssignment_1 ) )
            {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1837:1: ( ( rule__Enumeration__NameAssignment_1 ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1838:1: ( rule__Enumeration__NameAssignment_1 )
            {
             before(grammarAccess.getEnumerationAccess().getNameAssignment_1()); 
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1839:1: ( rule__Enumeration__NameAssignment_1 )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1839:2: rule__Enumeration__NameAssignment_1
            {
            pushFollow(FOLLOW_rule__Enumeration__NameAssignment_1_in_rule__Enumeration__Group__1__Impl3656);
            rule__Enumeration__NameAssignment_1();

            state._fsp--;


            }

             after(grammarAccess.getEnumerationAccess().getNameAssignment_1()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Enumeration__Group__1__Impl"


    // $ANTLR start "rule__Enumeration__Group__2"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1849:1: rule__Enumeration__Group__2 : rule__Enumeration__Group__2__Impl rule__Enumeration__Group__3 ;
    public final void rule__Enumeration__Group__2() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1853:1: ( rule__Enumeration__Group__2__Impl rule__Enumeration__Group__3 )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1854:2: rule__Enumeration__Group__2__Impl rule__Enumeration__Group__3
            {
            pushFollow(FOLLOW_rule__Enumeration__Group__2__Impl_in_rule__Enumeration__Group__23686);
            rule__Enumeration__Group__2__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Enumeration__Group__3_in_rule__Enumeration__Group__23689);
            rule__Enumeration__Group__3();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Enumeration__Group__2"


    // $ANTLR start "rule__Enumeration__Group__2__Impl"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1861:1: rule__Enumeration__Group__2__Impl : ( '{' ) ;
    public final void rule__Enumeration__Group__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1865:1: ( ( '{' ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1866:1: ( '{' )
            {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1866:1: ( '{' )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1867:1: '{'
            {
             before(grammarAccess.getEnumerationAccess().getLeftCurlyBracketKeyword_2()); 
            match(input,13,FOLLOW_13_in_rule__Enumeration__Group__2__Impl3717); 
             after(grammarAccess.getEnumerationAccess().getLeftCurlyBracketKeyword_2()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Enumeration__Group__2__Impl"


    // $ANTLR start "rule__Enumeration__Group__3"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1880:1: rule__Enumeration__Group__3 : rule__Enumeration__Group__3__Impl rule__Enumeration__Group__4 ;
    public final void rule__Enumeration__Group__3() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1884:1: ( rule__Enumeration__Group__3__Impl rule__Enumeration__Group__4 )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1885:2: rule__Enumeration__Group__3__Impl rule__Enumeration__Group__4
            {
            pushFollow(FOLLOW_rule__Enumeration__Group__3__Impl_in_rule__Enumeration__Group__33748);
            rule__Enumeration__Group__3__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Enumeration__Group__4_in_rule__Enumeration__Group__33751);
            rule__Enumeration__Group__4();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Enumeration__Group__3"


    // $ANTLR start "rule__Enumeration__Group__3__Impl"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1892:1: rule__Enumeration__Group__3__Impl : ( ( ( rule__Enumeration__LiteralsAssignment_3 ) ) ( ( rule__Enumeration__LiteralsAssignment_3 )* ) ) ;
    public final void rule__Enumeration__Group__3__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1896:1: ( ( ( ( rule__Enumeration__LiteralsAssignment_3 ) ) ( ( rule__Enumeration__LiteralsAssignment_3 )* ) ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1897:1: ( ( ( rule__Enumeration__LiteralsAssignment_3 ) ) ( ( rule__Enumeration__LiteralsAssignment_3 )* ) )
            {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1897:1: ( ( ( rule__Enumeration__LiteralsAssignment_3 ) ) ( ( rule__Enumeration__LiteralsAssignment_3 )* ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1898:1: ( ( rule__Enumeration__LiteralsAssignment_3 ) ) ( ( rule__Enumeration__LiteralsAssignment_3 )* )
            {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1898:1: ( ( rule__Enumeration__LiteralsAssignment_3 ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1899:1: ( rule__Enumeration__LiteralsAssignment_3 )
            {
             before(grammarAccess.getEnumerationAccess().getLiteralsAssignment_3()); 
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1900:1: ( rule__Enumeration__LiteralsAssignment_3 )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1900:2: rule__Enumeration__LiteralsAssignment_3
            {
            pushFollow(FOLLOW_rule__Enumeration__LiteralsAssignment_3_in_rule__Enumeration__Group__3__Impl3780);
            rule__Enumeration__LiteralsAssignment_3();

            state._fsp--;


            }

             after(grammarAccess.getEnumerationAccess().getLiteralsAssignment_3()); 

            }

            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1903:1: ( ( rule__Enumeration__LiteralsAssignment_3 )* )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1904:1: ( rule__Enumeration__LiteralsAssignment_3 )*
            {
             before(grammarAccess.getEnumerationAccess().getLiteralsAssignment_3()); 
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1905:1: ( rule__Enumeration__LiteralsAssignment_3 )*
            loop16:
            do {
                int alt16=2;
                int LA16_0 = input.LA(1);

                if ( (LA16_0==25) ) {
                    alt16=1;
                }


                switch (alt16) {
            	case 1 :
            	    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1905:2: rule__Enumeration__LiteralsAssignment_3
            	    {
            	    pushFollow(FOLLOW_rule__Enumeration__LiteralsAssignment_3_in_rule__Enumeration__Group__3__Impl3792);
            	    rule__Enumeration__LiteralsAssignment_3();

            	    state._fsp--;


            	    }
            	    break;

            	default :
            	    break loop16;
                }
            } while (true);

             after(grammarAccess.getEnumerationAccess().getLiteralsAssignment_3()); 

            }


            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Enumeration__Group__3__Impl"


    // $ANTLR start "rule__Enumeration__Group__4"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1916:1: rule__Enumeration__Group__4 : rule__Enumeration__Group__4__Impl ;
    public final void rule__Enumeration__Group__4() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1920:1: ( rule__Enumeration__Group__4__Impl )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1921:2: rule__Enumeration__Group__4__Impl
            {
            pushFollow(FOLLOW_rule__Enumeration__Group__4__Impl_in_rule__Enumeration__Group__43825);
            rule__Enumeration__Group__4__Impl();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Enumeration__Group__4"


    // $ANTLR start "rule__Enumeration__Group__4__Impl"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1927:1: rule__Enumeration__Group__4__Impl : ( '}' ) ;
    public final void rule__Enumeration__Group__4__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1931:1: ( ( '}' ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1932:1: ( '}' )
            {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1932:1: ( '}' )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1933:1: '}'
            {
             before(grammarAccess.getEnumerationAccess().getRightCurlyBracketKeyword_4()); 
            match(input,14,FOLLOW_14_in_rule__Enumeration__Group__4__Impl3853); 
             after(grammarAccess.getEnumerationAccess().getRightCurlyBracketKeyword_4()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Enumeration__Group__4__Impl"


    // $ANTLR start "rule__Literal__Group__0"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1956:1: rule__Literal__Group__0 : rule__Literal__Group__0__Impl rule__Literal__Group__1 ;
    public final void rule__Literal__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1960:1: ( rule__Literal__Group__0__Impl rule__Literal__Group__1 )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1961:2: rule__Literal__Group__0__Impl rule__Literal__Group__1
            {
            pushFollow(FOLLOW_rule__Literal__Group__0__Impl_in_rule__Literal__Group__03894);
            rule__Literal__Group__0__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Literal__Group__1_in_rule__Literal__Group__03897);
            rule__Literal__Group__1();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Literal__Group__0"


    // $ANTLR start "rule__Literal__Group__0__Impl"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1968:1: rule__Literal__Group__0__Impl : ( 'literal' ) ;
    public final void rule__Literal__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1972:1: ( ( 'literal' ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1973:1: ( 'literal' )
            {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1973:1: ( 'literal' )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1974:1: 'literal'
            {
             before(grammarAccess.getLiteralAccess().getLiteralKeyword_0()); 
            match(input,25,FOLLOW_25_in_rule__Literal__Group__0__Impl3925); 
             after(grammarAccess.getLiteralAccess().getLiteralKeyword_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Literal__Group__0__Impl"


    // $ANTLR start "rule__Literal__Group__1"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1987:1: rule__Literal__Group__1 : rule__Literal__Group__1__Impl rule__Literal__Group__2 ;
    public final void rule__Literal__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1991:1: ( rule__Literal__Group__1__Impl rule__Literal__Group__2 )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1992:2: rule__Literal__Group__1__Impl rule__Literal__Group__2
            {
            pushFollow(FOLLOW_rule__Literal__Group__1__Impl_in_rule__Literal__Group__13956);
            rule__Literal__Group__1__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Literal__Group__2_in_rule__Literal__Group__13959);
            rule__Literal__Group__2();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Literal__Group__1"


    // $ANTLR start "rule__Literal__Group__1__Impl"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:1999:1: rule__Literal__Group__1__Impl : ( ( rule__Literal__NameAssignment_1 ) ) ;
    public final void rule__Literal__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2003:1: ( ( ( rule__Literal__NameAssignment_1 ) ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2004:1: ( ( rule__Literal__NameAssignment_1 ) )
            {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2004:1: ( ( rule__Literal__NameAssignment_1 ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2005:1: ( rule__Literal__NameAssignment_1 )
            {
             before(grammarAccess.getLiteralAccess().getNameAssignment_1()); 
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2006:1: ( rule__Literal__NameAssignment_1 )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2006:2: rule__Literal__NameAssignment_1
            {
            pushFollow(FOLLOW_rule__Literal__NameAssignment_1_in_rule__Literal__Group__1__Impl3986);
            rule__Literal__NameAssignment_1();

            state._fsp--;


            }

             after(grammarAccess.getLiteralAccess().getNameAssignment_1()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Literal__Group__1__Impl"


    // $ANTLR start "rule__Literal__Group__2"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2016:1: rule__Literal__Group__2 : rule__Literal__Group__2__Impl ;
    public final void rule__Literal__Group__2() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2020:1: ( rule__Literal__Group__2__Impl )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2021:2: rule__Literal__Group__2__Impl
            {
            pushFollow(FOLLOW_rule__Literal__Group__2__Impl_in_rule__Literal__Group__24016);
            rule__Literal__Group__2__Impl();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Literal__Group__2"


    // $ANTLR start "rule__Literal__Group__2__Impl"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2027:1: rule__Literal__Group__2__Impl : ( ';' ) ;
    public final void rule__Literal__Group__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2031:1: ( ( ';' ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2032:1: ( ';' )
            {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2032:1: ( ';' )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2033:1: ';'
            {
             before(grammarAccess.getLiteralAccess().getSemicolonKeyword_2()); 
            match(input,19,FOLLOW_19_in_rule__Literal__Group__2__Impl4044); 
             after(grammarAccess.getLiteralAccess().getSemicolonKeyword_2()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Literal__Group__2__Impl"


    // $ANTLR start "rule__Metamodel__PackagesAssignment"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2053:1: rule__Metamodel__PackagesAssignment : ( rulePackage ) ;
    public final void rule__Metamodel__PackagesAssignment() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2057:1: ( ( rulePackage ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2058:1: ( rulePackage )
            {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2058:1: ( rulePackage )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2059:1: rulePackage
            {
             before(grammarAccess.getMetamodelAccess().getPackagesPackageParserRuleCall_0()); 
            pushFollow(FOLLOW_rulePackage_in_rule__Metamodel__PackagesAssignment4086);
            rulePackage();

            state._fsp--;

             after(grammarAccess.getMetamodelAccess().getPackagesPackageParserRuleCall_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Metamodel__PackagesAssignment"


    // $ANTLR start "rule__Package__NameAssignment_1"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2068:1: rule__Package__NameAssignment_1 : ( RULE_ID ) ;
    public final void rule__Package__NameAssignment_1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2072:1: ( ( RULE_ID ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2073:1: ( RULE_ID )
            {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2073:1: ( RULE_ID )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2074:1: RULE_ID
            {
             before(grammarAccess.getPackageAccess().getNameIDTerminalRuleCall_1_0()); 
            match(input,RULE_ID,FOLLOW_RULE_ID_in_rule__Package__NameAssignment_14117); 
             after(grammarAccess.getPackageAccess().getNameIDTerminalRuleCall_1_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Package__NameAssignment_1"


    // $ANTLR start "rule__Package__ClassifiersAssignment_3"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2083:1: rule__Package__ClassifiersAssignment_3 : ( ruleClassifier ) ;
    public final void rule__Package__ClassifiersAssignment_3() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2087:1: ( ( ruleClassifier ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2088:1: ( ruleClassifier )
            {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2088:1: ( ruleClassifier )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2089:1: ruleClassifier
            {
             before(grammarAccess.getPackageAccess().getClassifiersClassifierParserRuleCall_3_0()); 
            pushFollow(FOLLOW_ruleClassifier_in_rule__Package__ClassifiersAssignment_34148);
            ruleClassifier();

            state._fsp--;

             after(grammarAccess.getPackageAccess().getClassifiersClassifierParserRuleCall_3_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Package__ClassifiersAssignment_3"


    // $ANTLR start "rule__KM3Class__AbstractAssignment_0"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2098:1: rule__KM3Class__AbstractAssignment_0 : ( ( 'abstract' ) ) ;
    public final void rule__KM3Class__AbstractAssignment_0() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2102:1: ( ( ( 'abstract' ) ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2103:1: ( ( 'abstract' ) )
            {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2103:1: ( ( 'abstract' ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2104:1: ( 'abstract' )
            {
             before(grammarAccess.getKM3ClassAccess().getAbstractAbstractKeyword_0_0()); 
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2105:1: ( 'abstract' )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2106:1: 'abstract'
            {
             before(grammarAccess.getKM3ClassAccess().getAbstractAbstractKeyword_0_0()); 
            match(input,26,FOLLOW_26_in_rule__KM3Class__AbstractAssignment_04184); 
             after(grammarAccess.getKM3ClassAccess().getAbstractAbstractKeyword_0_0()); 

            }

             after(grammarAccess.getKM3ClassAccess().getAbstractAbstractKeyword_0_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__KM3Class__AbstractAssignment_0"


    // $ANTLR start "rule__KM3Class__NameAssignment_2"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2121:1: rule__KM3Class__NameAssignment_2 : ( RULE_ID ) ;
    public final void rule__KM3Class__NameAssignment_2() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2125:1: ( ( RULE_ID ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2126:1: ( RULE_ID )
            {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2126:1: ( RULE_ID )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2127:1: RULE_ID
            {
             before(grammarAccess.getKM3ClassAccess().getNameIDTerminalRuleCall_2_0()); 
            match(input,RULE_ID,FOLLOW_RULE_ID_in_rule__KM3Class__NameAssignment_24223); 
             after(grammarAccess.getKM3ClassAccess().getNameIDTerminalRuleCall_2_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__KM3Class__NameAssignment_2"


    // $ANTLR start "rule__KM3Class__SuperTypeAssignment_3_1"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2136:1: rule__KM3Class__SuperTypeAssignment_3_1 : ( ( RULE_ID ) ) ;
    public final void rule__KM3Class__SuperTypeAssignment_3_1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2140:1: ( ( ( RULE_ID ) ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2141:1: ( ( RULE_ID ) )
            {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2141:1: ( ( RULE_ID ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2142:1: ( RULE_ID )
            {
             before(grammarAccess.getKM3ClassAccess().getSuperTypeKM3ClassCrossReference_3_1_0()); 
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2143:1: ( RULE_ID )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2144:1: RULE_ID
            {
             before(grammarAccess.getKM3ClassAccess().getSuperTypeKM3ClassIDTerminalRuleCall_3_1_0_1()); 
            match(input,RULE_ID,FOLLOW_RULE_ID_in_rule__KM3Class__SuperTypeAssignment_3_14258); 
             after(grammarAccess.getKM3ClassAccess().getSuperTypeKM3ClassIDTerminalRuleCall_3_1_0_1()); 

            }

             after(grammarAccess.getKM3ClassAccess().getSuperTypeKM3ClassCrossReference_3_1_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__KM3Class__SuperTypeAssignment_3_1"


    // $ANTLR start "rule__KM3Class__FeaturesAssignment_5"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2155:1: rule__KM3Class__FeaturesAssignment_5 : ( ruleFeature ) ;
    public final void rule__KM3Class__FeaturesAssignment_5() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2159:1: ( ( ruleFeature ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2160:1: ( ruleFeature )
            {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2160:1: ( ruleFeature )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2161:1: ruleFeature
            {
             before(grammarAccess.getKM3ClassAccess().getFeaturesFeatureParserRuleCall_5_0()); 
            pushFollow(FOLLOW_ruleFeature_in_rule__KM3Class__FeaturesAssignment_54293);
            ruleFeature();

            state._fsp--;

             after(grammarAccess.getKM3ClassAccess().getFeaturesFeatureParserRuleCall_5_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__KM3Class__FeaturesAssignment_5"


    // $ANTLR start "rule__Attribute__NameAssignment_1"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2170:1: rule__Attribute__NameAssignment_1 : ( RULE_ID ) ;
    public final void rule__Attribute__NameAssignment_1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2174:1: ( ( RULE_ID ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2175:1: ( RULE_ID )
            {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2175:1: ( RULE_ID )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2176:1: RULE_ID
            {
             before(grammarAccess.getAttributeAccess().getNameIDTerminalRuleCall_1_0()); 
            match(input,RULE_ID,FOLLOW_RULE_ID_in_rule__Attribute__NameAssignment_14324); 
             after(grammarAccess.getAttributeAccess().getNameIDTerminalRuleCall_1_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Attribute__NameAssignment_1"


    // $ANTLR start "rule__Attribute__MultiplicityAssignment_2"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2185:1: rule__Attribute__MultiplicityAssignment_2 : ( ruleMultiplicity ) ;
    public final void rule__Attribute__MultiplicityAssignment_2() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2189:1: ( ( ruleMultiplicity ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2190:1: ( ruleMultiplicity )
            {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2190:1: ( ruleMultiplicity )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2191:1: ruleMultiplicity
            {
             before(grammarAccess.getAttributeAccess().getMultiplicityMultiplicityParserRuleCall_2_0()); 
            pushFollow(FOLLOW_ruleMultiplicity_in_rule__Attribute__MultiplicityAssignment_24355);
            ruleMultiplicity();

            state._fsp--;

             after(grammarAccess.getAttributeAccess().getMultiplicityMultiplicityParserRuleCall_2_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Attribute__MultiplicityAssignment_2"


    // $ANTLR start "rule__Attribute__TypeRefAssignment_4"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2200:1: rule__Attribute__TypeRefAssignment_4 : ( ruleTypeRef ) ;
    public final void rule__Attribute__TypeRefAssignment_4() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2204:1: ( ( ruleTypeRef ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2205:1: ( ruleTypeRef )
            {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2205:1: ( ruleTypeRef )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2206:1: ruleTypeRef
            {
             before(grammarAccess.getAttributeAccess().getTypeRefTypeRefParserRuleCall_4_0()); 
            pushFollow(FOLLOW_ruleTypeRef_in_rule__Attribute__TypeRefAssignment_44386);
            ruleTypeRef();

            state._fsp--;

             after(grammarAccess.getAttributeAccess().getTypeRefTypeRefParserRuleCall_4_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Attribute__TypeRefAssignment_4"


    // $ANTLR start "rule__TypeRef__TypeAssignment"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2215:1: rule__TypeRef__TypeAssignment : ( ( RULE_ID ) ) ;
    public final void rule__TypeRef__TypeAssignment() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2219:1: ( ( ( RULE_ID ) ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2220:1: ( ( RULE_ID ) )
            {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2220:1: ( ( RULE_ID ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2221:1: ( RULE_ID )
            {
             before(grammarAccess.getTypeRefAccess().getTypeClassifierCrossReference_0()); 
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2222:1: ( RULE_ID )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2223:1: RULE_ID
            {
             before(grammarAccess.getTypeRefAccess().getTypeClassifierIDTerminalRuleCall_0_1()); 
            match(input,RULE_ID,FOLLOW_RULE_ID_in_rule__TypeRef__TypeAssignment4421); 
             after(grammarAccess.getTypeRefAccess().getTypeClassifierIDTerminalRuleCall_0_1()); 

            }

             after(grammarAccess.getTypeRefAccess().getTypeClassifierCrossReference_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__TypeRef__TypeAssignment"


    // $ANTLR start "rule__Reference__NameAssignment_1"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2234:1: rule__Reference__NameAssignment_1 : ( RULE_ID ) ;
    public final void rule__Reference__NameAssignment_1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2238:1: ( ( RULE_ID ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2239:1: ( RULE_ID )
            {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2239:1: ( RULE_ID )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2240:1: RULE_ID
            {
             before(grammarAccess.getReferenceAccess().getNameIDTerminalRuleCall_1_0()); 
            match(input,RULE_ID,FOLLOW_RULE_ID_in_rule__Reference__NameAssignment_14456); 
             after(grammarAccess.getReferenceAccess().getNameIDTerminalRuleCall_1_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Reference__NameAssignment_1"


    // $ANTLR start "rule__Reference__MultiplicityAssignment_2"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2249:1: rule__Reference__MultiplicityAssignment_2 : ( ruleMultiplicity ) ;
    public final void rule__Reference__MultiplicityAssignment_2() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2253:1: ( ( ruleMultiplicity ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2254:1: ( ruleMultiplicity )
            {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2254:1: ( ruleMultiplicity )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2255:1: ruleMultiplicity
            {
             before(grammarAccess.getReferenceAccess().getMultiplicityMultiplicityParserRuleCall_2_0()); 
            pushFollow(FOLLOW_ruleMultiplicity_in_rule__Reference__MultiplicityAssignment_24487);
            ruleMultiplicity();

            state._fsp--;

             after(grammarAccess.getReferenceAccess().getMultiplicityMultiplicityParserRuleCall_2_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Reference__MultiplicityAssignment_2"


    // $ANTLR start "rule__Reference__ContainerAssignment_3"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2264:1: rule__Reference__ContainerAssignment_3 : ( ( 'container' ) ) ;
    public final void rule__Reference__ContainerAssignment_3() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2268:1: ( ( ( 'container' ) ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2269:1: ( ( 'container' ) )
            {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2269:1: ( ( 'container' ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2270:1: ( 'container' )
            {
             before(grammarAccess.getReferenceAccess().getContainerContainerKeyword_3_0()); 
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2271:1: ( 'container' )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2272:1: 'container'
            {
             before(grammarAccess.getReferenceAccess().getContainerContainerKeyword_3_0()); 
            match(input,27,FOLLOW_27_in_rule__Reference__ContainerAssignment_34523); 
             after(grammarAccess.getReferenceAccess().getContainerContainerKeyword_3_0()); 

            }

             after(grammarAccess.getReferenceAccess().getContainerContainerKeyword_3_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Reference__ContainerAssignment_3"


    // $ANTLR start "rule__Reference__TypeRefAssignment_5"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2287:1: rule__Reference__TypeRefAssignment_5 : ( ruleTypeRef ) ;
    public final void rule__Reference__TypeRefAssignment_5() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2291:1: ( ( ruleTypeRef ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2292:1: ( ruleTypeRef )
            {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2292:1: ( ruleTypeRef )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2293:1: ruleTypeRef
            {
             before(grammarAccess.getReferenceAccess().getTypeRefTypeRefParserRuleCall_5_0()); 
            pushFollow(FOLLOW_ruleTypeRef_in_rule__Reference__TypeRefAssignment_54562);
            ruleTypeRef();

            state._fsp--;

             after(grammarAccess.getReferenceAccess().getTypeRefTypeRefParserRuleCall_5_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Reference__TypeRefAssignment_5"


    // $ANTLR start "rule__Reference__OppositeAssignment_6_1"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2302:1: rule__Reference__OppositeAssignment_6_1 : ( ( RULE_ID ) ) ;
    public final void rule__Reference__OppositeAssignment_6_1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2306:1: ( ( ( RULE_ID ) ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2307:1: ( ( RULE_ID ) )
            {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2307:1: ( ( RULE_ID ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2308:1: ( RULE_ID )
            {
             before(grammarAccess.getReferenceAccess().getOppositeReferenceCrossReference_6_1_0()); 
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2309:1: ( RULE_ID )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2310:1: RULE_ID
            {
             before(grammarAccess.getReferenceAccess().getOppositeReferenceIDTerminalRuleCall_6_1_0_1()); 
            match(input,RULE_ID,FOLLOW_RULE_ID_in_rule__Reference__OppositeAssignment_6_14597); 
             after(grammarAccess.getReferenceAccess().getOppositeReferenceIDTerminalRuleCall_6_1_0_1()); 

            }

             after(grammarAccess.getReferenceAccess().getOppositeReferenceCrossReference_6_1_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Reference__OppositeAssignment_6_1"


    // $ANTLR start "rule__Multiplicity__LowerBoundAssignment_1_0_0"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2321:1: rule__Multiplicity__LowerBoundAssignment_1_0_0 : ( RULE_INT ) ;
    public final void rule__Multiplicity__LowerBoundAssignment_1_0_0() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2325:1: ( ( RULE_INT ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2326:1: ( RULE_INT )
            {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2326:1: ( RULE_INT )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2327:1: RULE_INT
            {
             before(grammarAccess.getMultiplicityAccess().getLowerBoundINTTerminalRuleCall_1_0_0_0()); 
            match(input,RULE_INT,FOLLOW_RULE_INT_in_rule__Multiplicity__LowerBoundAssignment_1_0_04632); 
             after(grammarAccess.getMultiplicityAccess().getLowerBoundINTTerminalRuleCall_1_0_0_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Multiplicity__LowerBoundAssignment_1_0_0"


    // $ANTLR start "rule__Multiplicity__UpperBoundAssignment_1_0_1_1_0"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2336:1: rule__Multiplicity__UpperBoundAssignment_1_0_1_1_0 : ( RULE_INT ) ;
    public final void rule__Multiplicity__UpperBoundAssignment_1_0_1_1_0() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2340:1: ( ( RULE_INT ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2341:1: ( RULE_INT )
            {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2341:1: ( RULE_INT )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2342:1: RULE_INT
            {
             before(grammarAccess.getMultiplicityAccess().getUpperBoundINTTerminalRuleCall_1_0_1_1_0_0()); 
            match(input,RULE_INT,FOLLOW_RULE_INT_in_rule__Multiplicity__UpperBoundAssignment_1_0_1_1_04663); 
             after(grammarAccess.getMultiplicityAccess().getUpperBoundINTTerminalRuleCall_1_0_1_1_0_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Multiplicity__UpperBoundAssignment_1_0_1_1_0"


    // $ANTLR start "rule__Multiplicity__UnboundedAssignment_1_1"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2351:1: rule__Multiplicity__UnboundedAssignment_1_1 : ( ( '*' ) ) ;
    public final void rule__Multiplicity__UnboundedAssignment_1_1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2355:1: ( ( ( '*' ) ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2356:1: ( ( '*' ) )
            {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2356:1: ( ( '*' ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2357:1: ( '*' )
            {
             before(grammarAccess.getMultiplicityAccess().getUnboundedAsteriskKeyword_1_1_0()); 
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2358:1: ( '*' )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2359:1: '*'
            {
             before(grammarAccess.getMultiplicityAccess().getUnboundedAsteriskKeyword_1_1_0()); 
            match(input,11,FOLLOW_11_in_rule__Multiplicity__UnboundedAssignment_1_14699); 
             after(grammarAccess.getMultiplicityAccess().getUnboundedAsteriskKeyword_1_1_0()); 

            }

             after(grammarAccess.getMultiplicityAccess().getUnboundedAsteriskKeyword_1_1_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Multiplicity__UnboundedAssignment_1_1"


    // $ANTLR start "rule__Multiplicity__OrderedAssignment_3"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2374:1: rule__Multiplicity__OrderedAssignment_3 : ( ( 'ordered' ) ) ;
    public final void rule__Multiplicity__OrderedAssignment_3() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2378:1: ( ( ( 'ordered' ) ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2379:1: ( ( 'ordered' ) )
            {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2379:1: ( ( 'ordered' ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2380:1: ( 'ordered' )
            {
             before(grammarAccess.getMultiplicityAccess().getOrderedOrderedKeyword_3_0()); 
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2381:1: ( 'ordered' )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2382:1: 'ordered'
            {
             before(grammarAccess.getMultiplicityAccess().getOrderedOrderedKeyword_3_0()); 
            match(input,28,FOLLOW_28_in_rule__Multiplicity__OrderedAssignment_34743); 
             after(grammarAccess.getMultiplicityAccess().getOrderedOrderedKeyword_3_0()); 

            }

             after(grammarAccess.getMultiplicityAccess().getOrderedOrderedKeyword_3_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Multiplicity__OrderedAssignment_3"


    // $ANTLR start "rule__Datatype__DatatypeAssignment_0"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2397:1: rule__Datatype__DatatypeAssignment_0 : ( ( 'datatype' ) ) ;
    public final void rule__Datatype__DatatypeAssignment_0() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2401:1: ( ( ( 'datatype' ) ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2402:1: ( ( 'datatype' ) )
            {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2402:1: ( ( 'datatype' ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2403:1: ( 'datatype' )
            {
             before(grammarAccess.getDatatypeAccess().getDatatypeDatatypeKeyword_0_0()); 
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2404:1: ( 'datatype' )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2405:1: 'datatype'
            {
             before(grammarAccess.getDatatypeAccess().getDatatypeDatatypeKeyword_0_0()); 
            match(input,29,FOLLOW_29_in_rule__Datatype__DatatypeAssignment_04787); 
             after(grammarAccess.getDatatypeAccess().getDatatypeDatatypeKeyword_0_0()); 

            }

             after(grammarAccess.getDatatypeAccess().getDatatypeDatatypeKeyword_0_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Datatype__DatatypeAssignment_0"


    // $ANTLR start "rule__Datatype__NameAssignment_1"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2420:1: rule__Datatype__NameAssignment_1 : ( RULE_ID ) ;
    public final void rule__Datatype__NameAssignment_1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2424:1: ( ( RULE_ID ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2425:1: ( RULE_ID )
            {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2425:1: ( RULE_ID )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2426:1: RULE_ID
            {
             before(grammarAccess.getDatatypeAccess().getNameIDTerminalRuleCall_1_0()); 
            match(input,RULE_ID,FOLLOW_RULE_ID_in_rule__Datatype__NameAssignment_14826); 
             after(grammarAccess.getDatatypeAccess().getNameIDTerminalRuleCall_1_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Datatype__NameAssignment_1"


    // $ANTLR start "rule__Enumeration__EnumerationAssignment_0"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2435:1: rule__Enumeration__EnumerationAssignment_0 : ( ( 'enumeration' ) ) ;
    public final void rule__Enumeration__EnumerationAssignment_0() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2439:1: ( ( ( 'enumeration' ) ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2440:1: ( ( 'enumeration' ) )
            {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2440:1: ( ( 'enumeration' ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2441:1: ( 'enumeration' )
            {
             before(grammarAccess.getEnumerationAccess().getEnumerationEnumerationKeyword_0_0()); 
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2442:1: ( 'enumeration' )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2443:1: 'enumeration'
            {
             before(grammarAccess.getEnumerationAccess().getEnumerationEnumerationKeyword_0_0()); 
            match(input,30,FOLLOW_30_in_rule__Enumeration__EnumerationAssignment_04862); 
             after(grammarAccess.getEnumerationAccess().getEnumerationEnumerationKeyword_0_0()); 

            }

             after(grammarAccess.getEnumerationAccess().getEnumerationEnumerationKeyword_0_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Enumeration__EnumerationAssignment_0"


    // $ANTLR start "rule__Enumeration__NameAssignment_1"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2458:1: rule__Enumeration__NameAssignment_1 : ( RULE_ID ) ;
    public final void rule__Enumeration__NameAssignment_1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2462:1: ( ( RULE_ID ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2463:1: ( RULE_ID )
            {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2463:1: ( RULE_ID )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2464:1: RULE_ID
            {
             before(grammarAccess.getEnumerationAccess().getNameIDTerminalRuleCall_1_0()); 
            match(input,RULE_ID,FOLLOW_RULE_ID_in_rule__Enumeration__NameAssignment_14901); 
             after(grammarAccess.getEnumerationAccess().getNameIDTerminalRuleCall_1_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Enumeration__NameAssignment_1"


    // $ANTLR start "rule__Enumeration__LiteralsAssignment_3"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2473:1: rule__Enumeration__LiteralsAssignment_3 : ( ruleLiteral ) ;
    public final void rule__Enumeration__LiteralsAssignment_3() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2477:1: ( ( ruleLiteral ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2478:1: ( ruleLiteral )
            {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2478:1: ( ruleLiteral )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2479:1: ruleLiteral
            {
             before(grammarAccess.getEnumerationAccess().getLiteralsLiteralParserRuleCall_3_0()); 
            pushFollow(FOLLOW_ruleLiteral_in_rule__Enumeration__LiteralsAssignment_34932);
            ruleLiteral();

            state._fsp--;

             after(grammarAccess.getEnumerationAccess().getLiteralsLiteralParserRuleCall_3_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Enumeration__LiteralsAssignment_3"


    // $ANTLR start "rule__Literal__NameAssignment_1"
    // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2488:1: rule__Literal__NameAssignment_1 : ( RULE_ID ) ;
    public final void rule__Literal__NameAssignment_1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2492:1: ( ( RULE_ID ) )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2493:1: ( RULE_ID )
            {
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2493:1: ( RULE_ID )
            // ../org.dslintegration.KM3.ui/src-gen/org/dslintegration/ui/contentassist/antlr/internal/InternalKM3.g:2494:1: RULE_ID
            {
             before(grammarAccess.getLiteralAccess().getNameIDTerminalRuleCall_1_0()); 
            match(input,RULE_ID,FOLLOW_RULE_ID_in_rule__Literal__NameAssignment_14963); 
             after(grammarAccess.getLiteralAccess().getNameIDTerminalRuleCall_1_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Literal__NameAssignment_1"

    // Delegated rules


 

    public static final BitSet FOLLOW_ruleMetamodel_in_entryRuleMetamodel61 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleMetamodel68 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Metamodel__PackagesAssignment_in_ruleMetamodel94 = new BitSet(new long[]{0x0000000000001002L});
    public static final BitSet FOLLOW_rulePackage_in_entryRulePackage122 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulePackage129 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Package__Group__0_in_rulePackage155 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleClassifier_in_entryRuleClassifier182 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleClassifier189 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Classifier__Alternatives_in_ruleClassifier215 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleKM3Class_in_entryRuleKM3Class242 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleKM3Class249 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__KM3Class__Group__0_in_ruleKM3Class275 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleFeature_in_entryRuleFeature302 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleFeature309 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Feature__Alternatives_in_ruleFeature335 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleAttribute_in_entryRuleAttribute362 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleAttribute369 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Attribute__Group__0_in_ruleAttribute395 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleTypeRef_in_entryRuleTypeRef422 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleTypeRef429 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__TypeRef__TypeAssignment_in_ruleTypeRef455 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleReference_in_entryRuleReference482 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleReference489 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Reference__Group__0_in_ruleReference515 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleMultiplicity_in_entryRuleMultiplicity542 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleMultiplicity549 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Multiplicity__Group__0_in_ruleMultiplicity575 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleDatatype_in_entryRuleDatatype602 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleDatatype609 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Datatype__Group__0_in_ruleDatatype635 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleEnumeration_in_entryRuleEnumeration662 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleEnumeration669 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Enumeration__Group__0_in_ruleEnumeration695 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleLiteral_in_entryRuleLiteral722 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleLiteral729 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Literal__Group__0_in_ruleLiteral755 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleKM3Class_in_rule__Classifier__Alternatives791 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleDatatype_in_rule__Classifier__Alternatives808 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleEnumeration_in_rule__Classifier__Alternatives825 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleAttribute_in_rule__Feature__Alternatives857 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleReference_in_rule__Feature__Alternatives874 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Multiplicity__Group_1_0__0_in_rule__Multiplicity__Alternatives_1906 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Multiplicity__UnboundedAssignment_1_1_in_rule__Multiplicity__Alternatives_1924 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Multiplicity__UpperBoundAssignment_1_0_1_1_0_in_rule__Multiplicity__Alternatives_1_0_1_1957 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_11_in_rule__Multiplicity__Alternatives_1_0_1_1976 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Package__Group__0__Impl_in_rule__Package__Group__01008 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_rule__Package__Group__1_in_rule__Package__Group__01011 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_12_in_rule__Package__Group__0__Impl1039 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Package__Group__1__Impl_in_rule__Package__Group__11070 = new BitSet(new long[]{0x0000000000002000L});
    public static final BitSet FOLLOW_rule__Package__Group__2_in_rule__Package__Group__11073 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Package__NameAssignment_1_in_rule__Package__Group__1__Impl1100 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Package__Group__2__Impl_in_rule__Package__Group__21130 = new BitSet(new long[]{0x000000006400C000L});
    public static final BitSet FOLLOW_rule__Package__Group__3_in_rule__Package__Group__21133 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_13_in_rule__Package__Group__2__Impl1161 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Package__Group__3__Impl_in_rule__Package__Group__31192 = new BitSet(new long[]{0x000000006400C000L});
    public static final BitSet FOLLOW_rule__Package__Group__4_in_rule__Package__Group__31195 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Package__ClassifiersAssignment_3_in_rule__Package__Group__3__Impl1222 = new BitSet(new long[]{0x0000000064008002L});
    public static final BitSet FOLLOW_rule__Package__Group__4__Impl_in_rule__Package__Group__41253 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_14_in_rule__Package__Group__4__Impl1281 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__KM3Class__Group__0__Impl_in_rule__KM3Class__Group__01322 = new BitSet(new long[]{0x0000000004008000L});
    public static final BitSet FOLLOW_rule__KM3Class__Group__1_in_rule__KM3Class__Group__01325 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__KM3Class__AbstractAssignment_0_in_rule__KM3Class__Group__0__Impl1352 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__KM3Class__Group__1__Impl_in_rule__KM3Class__Group__11383 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_rule__KM3Class__Group__2_in_rule__KM3Class__Group__11386 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_15_in_rule__KM3Class__Group__1__Impl1414 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__KM3Class__Group__2__Impl_in_rule__KM3Class__Group__21445 = new BitSet(new long[]{0x0000000000012000L});
    public static final BitSet FOLLOW_rule__KM3Class__Group__3_in_rule__KM3Class__Group__21448 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__KM3Class__NameAssignment_2_in_rule__KM3Class__Group__2__Impl1475 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__KM3Class__Group__3__Impl_in_rule__KM3Class__Group__31505 = new BitSet(new long[]{0x0000000000012000L});
    public static final BitSet FOLLOW_rule__KM3Class__Group__4_in_rule__KM3Class__Group__31508 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__KM3Class__Group_3__0_in_rule__KM3Class__Group__3__Impl1535 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__KM3Class__Group__4__Impl_in_rule__KM3Class__Group__41566 = new BitSet(new long[]{0x0000000000124000L});
    public static final BitSet FOLLOW_rule__KM3Class__Group__5_in_rule__KM3Class__Group__41569 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_13_in_rule__KM3Class__Group__4__Impl1597 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__KM3Class__Group__5__Impl_in_rule__KM3Class__Group__51628 = new BitSet(new long[]{0x0000000000124000L});
    public static final BitSet FOLLOW_rule__KM3Class__Group__6_in_rule__KM3Class__Group__51631 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__KM3Class__FeaturesAssignment_5_in_rule__KM3Class__Group__5__Impl1658 = new BitSet(new long[]{0x0000000000120002L});
    public static final BitSet FOLLOW_rule__KM3Class__Group__6__Impl_in_rule__KM3Class__Group__61689 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_14_in_rule__KM3Class__Group__6__Impl1717 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__KM3Class__Group_3__0__Impl_in_rule__KM3Class__Group_3__01762 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_rule__KM3Class__Group_3__1_in_rule__KM3Class__Group_3__01765 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_16_in_rule__KM3Class__Group_3__0__Impl1793 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__KM3Class__Group_3__1__Impl_in_rule__KM3Class__Group_3__11824 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__KM3Class__SuperTypeAssignment_3_1_in_rule__KM3Class__Group_3__1__Impl1851 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Attribute__Group__0__Impl_in_rule__Attribute__Group__01885 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_rule__Attribute__Group__1_in_rule__Attribute__Group__01888 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_17_in_rule__Attribute__Group__0__Impl1916 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Attribute__Group__1__Impl_in_rule__Attribute__Group__11947 = new BitSet(new long[]{0x0000000000440000L});
    public static final BitSet FOLLOW_rule__Attribute__Group__2_in_rule__Attribute__Group__11950 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Attribute__NameAssignment_1_in_rule__Attribute__Group__1__Impl1977 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Attribute__Group__2__Impl_in_rule__Attribute__Group__22007 = new BitSet(new long[]{0x0000000000440000L});
    public static final BitSet FOLLOW_rule__Attribute__Group__3_in_rule__Attribute__Group__22010 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Attribute__MultiplicityAssignment_2_in_rule__Attribute__Group__2__Impl2037 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Attribute__Group__3__Impl_in_rule__Attribute__Group__32068 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_rule__Attribute__Group__4_in_rule__Attribute__Group__32071 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_18_in_rule__Attribute__Group__3__Impl2099 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Attribute__Group__4__Impl_in_rule__Attribute__Group__42130 = new BitSet(new long[]{0x0000000000080000L});
    public static final BitSet FOLLOW_rule__Attribute__Group__5_in_rule__Attribute__Group__42133 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Attribute__TypeRefAssignment_4_in_rule__Attribute__Group__4__Impl2160 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Attribute__Group__5__Impl_in_rule__Attribute__Group__52190 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_19_in_rule__Attribute__Group__5__Impl2218 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Reference__Group__0__Impl_in_rule__Reference__Group__02261 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_rule__Reference__Group__1_in_rule__Reference__Group__02264 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_20_in_rule__Reference__Group__0__Impl2292 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Reference__Group__1__Impl_in_rule__Reference__Group__12323 = new BitSet(new long[]{0x0000000008440000L});
    public static final BitSet FOLLOW_rule__Reference__Group__2_in_rule__Reference__Group__12326 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Reference__NameAssignment_1_in_rule__Reference__Group__1__Impl2353 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Reference__Group__2__Impl_in_rule__Reference__Group__22383 = new BitSet(new long[]{0x0000000008440000L});
    public static final BitSet FOLLOW_rule__Reference__Group__3_in_rule__Reference__Group__22386 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Reference__MultiplicityAssignment_2_in_rule__Reference__Group__2__Impl2413 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Reference__Group__3__Impl_in_rule__Reference__Group__32444 = new BitSet(new long[]{0x0000000008440000L});
    public static final BitSet FOLLOW_rule__Reference__Group__4_in_rule__Reference__Group__32447 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Reference__ContainerAssignment_3_in_rule__Reference__Group__3__Impl2474 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Reference__Group__4__Impl_in_rule__Reference__Group__42505 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_rule__Reference__Group__5_in_rule__Reference__Group__42508 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_18_in_rule__Reference__Group__4__Impl2536 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Reference__Group__5__Impl_in_rule__Reference__Group__52567 = new BitSet(new long[]{0x0000000000280000L});
    public static final BitSet FOLLOW_rule__Reference__Group__6_in_rule__Reference__Group__52570 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Reference__TypeRefAssignment_5_in_rule__Reference__Group__5__Impl2597 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Reference__Group__6__Impl_in_rule__Reference__Group__62627 = new BitSet(new long[]{0x0000000000280000L});
    public static final BitSet FOLLOW_rule__Reference__Group__7_in_rule__Reference__Group__62630 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Reference__Group_6__0_in_rule__Reference__Group__6__Impl2657 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Reference__Group__7__Impl_in_rule__Reference__Group__72688 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_19_in_rule__Reference__Group__7__Impl2716 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Reference__Group_6__0__Impl_in_rule__Reference__Group_6__02763 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_rule__Reference__Group_6__1_in_rule__Reference__Group_6__02766 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_21_in_rule__Reference__Group_6__0__Impl2794 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Reference__Group_6__1__Impl_in_rule__Reference__Group_6__12825 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Reference__OppositeAssignment_6_1_in_rule__Reference__Group_6__1__Impl2852 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Multiplicity__Group__0__Impl_in_rule__Multiplicity__Group__02886 = new BitSet(new long[]{0x0000000000000820L});
    public static final BitSet FOLLOW_rule__Multiplicity__Group__1_in_rule__Multiplicity__Group__02889 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_22_in_rule__Multiplicity__Group__0__Impl2917 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Multiplicity__Group__1__Impl_in_rule__Multiplicity__Group__12948 = new BitSet(new long[]{0x0000000000800000L});
    public static final BitSet FOLLOW_rule__Multiplicity__Group__2_in_rule__Multiplicity__Group__12951 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Multiplicity__Alternatives_1_in_rule__Multiplicity__Group__1__Impl2978 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Multiplicity__Group__2__Impl_in_rule__Multiplicity__Group__23008 = new BitSet(new long[]{0x0000000010000000L});
    public static final BitSet FOLLOW_rule__Multiplicity__Group__3_in_rule__Multiplicity__Group__23011 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_23_in_rule__Multiplicity__Group__2__Impl3039 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Multiplicity__Group__3__Impl_in_rule__Multiplicity__Group__33070 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Multiplicity__OrderedAssignment_3_in_rule__Multiplicity__Group__3__Impl3097 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Multiplicity__Group_1_0__0__Impl_in_rule__Multiplicity__Group_1_0__03136 = new BitSet(new long[]{0x0000000001000000L});
    public static final BitSet FOLLOW_rule__Multiplicity__Group_1_0__1_in_rule__Multiplicity__Group_1_0__03139 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Multiplicity__LowerBoundAssignment_1_0_0_in_rule__Multiplicity__Group_1_0__0__Impl3166 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Multiplicity__Group_1_0__1__Impl_in_rule__Multiplicity__Group_1_0__13196 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Multiplicity__Group_1_0_1__0_in_rule__Multiplicity__Group_1_0__1__Impl3223 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Multiplicity__Group_1_0_1__0__Impl_in_rule__Multiplicity__Group_1_0_1__03258 = new BitSet(new long[]{0x0000000000000820L});
    public static final BitSet FOLLOW_rule__Multiplicity__Group_1_0_1__1_in_rule__Multiplicity__Group_1_0_1__03261 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_24_in_rule__Multiplicity__Group_1_0_1__0__Impl3289 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Multiplicity__Group_1_0_1__1__Impl_in_rule__Multiplicity__Group_1_0_1__13320 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Multiplicity__Alternatives_1_0_1_1_in_rule__Multiplicity__Group_1_0_1__1__Impl3347 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Datatype__Group__0__Impl_in_rule__Datatype__Group__03381 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_rule__Datatype__Group__1_in_rule__Datatype__Group__03384 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Datatype__DatatypeAssignment_0_in_rule__Datatype__Group__0__Impl3411 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Datatype__Group__1__Impl_in_rule__Datatype__Group__13441 = new BitSet(new long[]{0x0000000000080000L});
    public static final BitSet FOLLOW_rule__Datatype__Group__2_in_rule__Datatype__Group__13444 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Datatype__NameAssignment_1_in_rule__Datatype__Group__1__Impl3471 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Datatype__Group__2__Impl_in_rule__Datatype__Group__23501 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_19_in_rule__Datatype__Group__2__Impl3529 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Enumeration__Group__0__Impl_in_rule__Enumeration__Group__03566 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_rule__Enumeration__Group__1_in_rule__Enumeration__Group__03569 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Enumeration__EnumerationAssignment_0_in_rule__Enumeration__Group__0__Impl3596 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Enumeration__Group__1__Impl_in_rule__Enumeration__Group__13626 = new BitSet(new long[]{0x0000000000002000L});
    public static final BitSet FOLLOW_rule__Enumeration__Group__2_in_rule__Enumeration__Group__13629 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Enumeration__NameAssignment_1_in_rule__Enumeration__Group__1__Impl3656 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Enumeration__Group__2__Impl_in_rule__Enumeration__Group__23686 = new BitSet(new long[]{0x0000000002000000L});
    public static final BitSet FOLLOW_rule__Enumeration__Group__3_in_rule__Enumeration__Group__23689 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_13_in_rule__Enumeration__Group__2__Impl3717 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Enumeration__Group__3__Impl_in_rule__Enumeration__Group__33748 = new BitSet(new long[]{0x0000000000004000L});
    public static final BitSet FOLLOW_rule__Enumeration__Group__4_in_rule__Enumeration__Group__33751 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Enumeration__LiteralsAssignment_3_in_rule__Enumeration__Group__3__Impl3780 = new BitSet(new long[]{0x0000000002000002L});
    public static final BitSet FOLLOW_rule__Enumeration__LiteralsAssignment_3_in_rule__Enumeration__Group__3__Impl3792 = new BitSet(new long[]{0x0000000002000002L});
    public static final BitSet FOLLOW_rule__Enumeration__Group__4__Impl_in_rule__Enumeration__Group__43825 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_14_in_rule__Enumeration__Group__4__Impl3853 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Literal__Group__0__Impl_in_rule__Literal__Group__03894 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_rule__Literal__Group__1_in_rule__Literal__Group__03897 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_25_in_rule__Literal__Group__0__Impl3925 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Literal__Group__1__Impl_in_rule__Literal__Group__13956 = new BitSet(new long[]{0x0000000000080000L});
    public static final BitSet FOLLOW_rule__Literal__Group__2_in_rule__Literal__Group__13959 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Literal__NameAssignment_1_in_rule__Literal__Group__1__Impl3986 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Literal__Group__2__Impl_in_rule__Literal__Group__24016 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_19_in_rule__Literal__Group__2__Impl4044 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulePackage_in_rule__Metamodel__PackagesAssignment4086 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_rule__Package__NameAssignment_14117 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleClassifier_in_rule__Package__ClassifiersAssignment_34148 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_26_in_rule__KM3Class__AbstractAssignment_04184 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_rule__KM3Class__NameAssignment_24223 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_rule__KM3Class__SuperTypeAssignment_3_14258 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleFeature_in_rule__KM3Class__FeaturesAssignment_54293 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_rule__Attribute__NameAssignment_14324 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleMultiplicity_in_rule__Attribute__MultiplicityAssignment_24355 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleTypeRef_in_rule__Attribute__TypeRefAssignment_44386 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_rule__TypeRef__TypeAssignment4421 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_rule__Reference__NameAssignment_14456 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleMultiplicity_in_rule__Reference__MultiplicityAssignment_24487 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_27_in_rule__Reference__ContainerAssignment_34523 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleTypeRef_in_rule__Reference__TypeRefAssignment_54562 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_rule__Reference__OppositeAssignment_6_14597 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_INT_in_rule__Multiplicity__LowerBoundAssignment_1_0_04632 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_INT_in_rule__Multiplicity__UpperBoundAssignment_1_0_1_1_04663 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_11_in_rule__Multiplicity__UnboundedAssignment_1_14699 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_28_in_rule__Multiplicity__OrderedAssignment_34743 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_29_in_rule__Datatype__DatatypeAssignment_04787 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_rule__Datatype__NameAssignment_14826 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_30_in_rule__Enumeration__EnumerationAssignment_04862 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_rule__Enumeration__NameAssignment_14901 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleLiteral_in_rule__Enumeration__LiteralsAssignment_34932 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_rule__Literal__NameAssignment_14963 = new BitSet(new long[]{0x0000000000000002L});

}